diff --git a/bus/ibus.desktop.in b/bus/ibus.desktop.in index fcf2f21..cd2ad60 100644 --- a/bus/ibus.desktop.in +++ b/bus/ibus.desktop.in @@ -7,7 +7,7 @@ Exec=ibus-daemon --xim Icon=ibus Terminal=false Type=Application -X-GNOME-Autostart-Phase=Panel +X-GNOME-Autostart-Phase=Applications X-GNOME-AutoRestart=false X-GNOME-Autostart-Notify=true X-KDE-autostart-after=panel diff --git a/bus/inputcontext.c b/bus/inputcontext.c index 456e049..7003bd7 100644 --- a/bus/inputcontext.c +++ b/bus/inputcontext.c @@ -2091,10 +2091,10 @@ bus_input_context_filter_keyboard_shortcuts (BusInputContext *context, return TRUE; } else if (event == next_factory) { - g_signal_emit (context, context_signals[REQUEST_NEXT_ENGINE], 0); - if (priv->engine && !priv->enabled) { - bus_input_context_enable (context); + if (priv->engine == NULL || priv->enabled == FALSE) { + return FALSE; } + g_signal_emit (context, context_signals[REQUEST_NEXT_ENGINE], 0); return TRUE; } else if (event == prev_factory) { diff --git a/bus/server.c b/bus/server.c index 7245bd3..1c796f2 100644 --- a/bus/server.c +++ b/bus/server.c @@ -86,21 +86,23 @@ bus_server_listen (BusServer *server) // const gchar *address = "unix:abstract=/tmp/ibus-c" const gchar *address; - gchar *path; + const gchar *path; gboolean retval; - path = g_strdup_printf("/tmp/ibus-%s", ibus_get_user_name ()); - mkdir (path, 0775); + path = ibus_get_socket_folder (); + mkdir (path, 0700); + chmod (path, 0700); + address = ibus_get_address (); retval = ibus_server_listen (IBUS_SERVER (server), address); + chmod (ibus_get_socket_path (), 0600); if (!retval) { g_printerr ("Can not listen on %s! Please try remove directory %s and run again.", address, path); exit (-1); } - g_free(path); return retval; } diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c index 5da4dec..168e45a 100644 --- a/client/gtk2/ibusimcontext.c +++ b/client/gtk2/ibusimcontext.c @@ -190,14 +190,20 @@ _key_snooper_cb (GtkWidget *widget, IBusIMContext *ibusimcontext; ibusimcontext = (IBusIMContext *) _focus_im_context; - if (!_use_key_snooper) + if (G_UNLIKELY (!_use_key_snooper)) return retval; if (ibusimcontext == NULL) - return retval; + return FALSE; - if (ibusimcontext->ibuscontext == NULL || ibusimcontext->has_focus == FALSE) - return retval; + if (G_UNLIKELY (ibusimcontext->ibuscontext == NULL || ibusimcontext->has_focus == FALSE)) + return FALSE; + + if (G_UNLIKELY (event->state & IBUS_HANDLED_MASK)) + return TRUE; + + if (G_UNLIKELY (event->state & IBUS_IGNORED_MASK)) + return FALSE; switch (event->type) { case GDK_KEY_RELEASE: @@ -212,6 +218,14 @@ _key_snooper_cb (GtkWidget *widget, break; default: retval = FALSE; + break; + } + + if (retval) { + event->state |= IBUS_HANDLED_MASK; + } + else { + event->state |= IBUS_IGNORED_MASK; } return retval; @@ -383,11 +397,18 @@ ibus_im_context_filter_keypress (GtkIMContext *context, IBusIMContext *ibusimcontext = (IBusIMContext *) context; - if (ibusimcontext->ibuscontext && ibusimcontext->has_focus) { + if (G_LIKELY (ibusimcontext->ibuscontext && ibusimcontext->has_focus)) { /* If context does not have focus, ibus will process key event in sync mode. * It is a workaround for increase search in treeview. */ - gboolean retval; + gboolean retval = FALSE; + + if (event->state & IBUS_HANDLED_MASK) + return TRUE; + + if (event->state & IBUS_IGNORED_MASK) + return gtk_im_context_filter_keypress (ibusimcontext->slave, event); + switch (event->type) { case GDK_KEY_RELEASE: retval = ibus_input_context_process_key_event (ibusimcontext->ibuscontext, @@ -404,9 +425,13 @@ ibus_im_context_filter_keypress (GtkIMContext *context, } if (retval) { + event->state |= IBUS_HANDLED_MASK; return TRUE; } - return gtk_im_context_filter_keypress (ibusimcontext->slave, event); + else { + event->state |= IBUS_IGNORED_MASK; + return gtk_im_context_filter_keypress (ibusimcontext->slave, event); + } } else { return gtk_im_context_filter_keypress (ibusimcontext->slave, event); diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in index be4b980..a976eec 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in @@ -18,7 +18,7 @@ ibus list string - [Control+space,Zenkaku_Hankaku,Alt+Zenkaku_Hankaku,Alt+grave,Hangul] + [Control+space,Zenkaku_Hankaku,Alt+Zenkaku_Hankaku,Alt+grave,Hangul,Alt+Release+Alt_R] Trigger Hotkey Trigger hotkey for enable or disable input context diff --git a/ibus/common.py b/ibus/common.py index 527d3a5..571ebaa 100644 --- a/ibus/common.py +++ b/ibus/common.py @@ -67,7 +67,12 @@ if not __username: if not __username: __username = os.getenv ("USERNAME") -IBUS_ADDR = "unix:path=/tmp/ibus-%s/ibus-%s-%s" % (__username, __hostname, __display_number) +__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" diff --git a/ibus/modifier.py b/ibus/modifier.py index 7f6afad..56d8be9 100644 --- a/ibus/modifier.py +++ b/ibus/modifier.py @@ -33,11 +33,15 @@ 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 diff --git a/po/as.po b/po/as.po index 8e33ca2..9b81669 100644 --- a/po/as.po +++ b/po/as.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: ibus.master.ibus.as\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-04-02 02:13+0000\n" -"PO-Revision-Date: 2009-04-08 15:55+0530\n" +"POT-Creation-Date: 2009-04-06 11:45+0800\n" +"PO-Revision-Date: 2009-04-09 19:03+0530\n" "Last-Translator: Amitakhya Phukan \n" "Language-Team: Assamese \n" "MIME-Version: 1.0\n" @@ -16,163 +16,19 @@ msgstr "" "X-Generator: Lokalize 0.3\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: ../src/keyname-table.h:3940 -msgid "keyboard label|BackSpace" -msgstr "keyboard label|BackSpace" +#: ../bus/ibus.desktop.in.h:1 +msgid "IBus" +msgstr "IBus" -#: ../src/keyname-table.h:3941 -msgid "keyboard label|Tab" -msgstr "keyboard label|Tab" - -#: ../src/keyname-table.h:3942 -msgid "keyboard label|Return" -msgstr "keyboard label|Return" - -#: ../src/keyname-table.h:3943 -msgid "keyboard label|Pause" -msgstr "keyboard label|Pause" - -#: ../src/keyname-table.h:3944 -msgid "keyboard label|Scroll_Lock" -msgstr "keyboard label|Scroll_Lock" - -#: ../src/keyname-table.h:3945 -msgid "keyboard label|Sys_Req" -msgstr "keyboard label|Sys_Req" - -#: ../src/keyname-table.h:3946 -msgid "keyboard label|Escape" -msgstr "keyboard label|Escape" - -#: ../src/keyname-table.h:3947 -msgid "keyboard label|Multi_key" -msgstr "keyboard label|Multi_key" - -#: ../src/keyname-table.h:3948 -msgid "keyboard label|Home" -msgstr "keyboard label|Home" - -#: ../src/keyname-table.h:3949 -msgid "keyboard label|Left" -msgstr "keyboard label|Left" - -#: ../src/keyname-table.h:3950 -msgid "keyboard label|Up" -msgstr "keyboard label|Up" - -#: ../src/keyname-table.h:3951 -msgid "keyboard label|Right" -msgstr "keyboard label|Right" - -#: ../src/keyname-table.h:3952 -msgid "keyboard label|Down" -msgstr "keyboard label|Down" - -#: ../src/keyname-table.h:3953 -msgid "keyboard label|Page_Up" -msgstr "keyboard label|Page_Up" - -#: ../src/keyname-table.h:3954 -msgid "keyboard label|Page_Down" -msgstr "keyboard label|Page_Down" - -#: ../src/keyname-table.h:3955 -msgid "keyboard label|End" -msgstr "keyboard label|End" - -#: ../src/keyname-table.h:3956 -msgid "keyboard label|Begin" -msgstr "keyboard label|Begin" - -#: ../src/keyname-table.h:3957 -msgid "keyboard label|Print" -msgstr "keyboard label|Print" - -#: ../src/keyname-table.h:3958 -msgid "keyboard label|Insert" -msgstr "keyboard label|Insert" - -#: ../src/keyname-table.h:3959 -msgid "keyboard label|Num_Lock" -msgstr "keyboard label|Num_Lock" - -#: ../src/keyname-table.h:3960 -msgid "keyboard label|KP_Space" -msgstr "keyboard label|KP_Space" - -#: ../src/keyname-table.h:3961 -msgid "keyboard label|KP_Tab" -msgstr "keyboard label|KP_Tab" - -#: ../src/keyname-table.h:3962 -msgid "keyboard label|KP_Enter" -msgstr "keyboard label|KP_Enter" - -#: ../src/keyname-table.h:3963 -msgid "keyboard label|KP_Home" -msgstr "keyboard label|KP_Home" - -#: ../src/keyname-table.h:3964 -msgid "keyboard label|KP_Left" -msgstr "keyboard label|KP_Left" - -#: ../src/keyname-table.h:3965 -msgid "keyboard label|KP_Up" -msgstr "keyboard label|KP_Up" - -#: ../src/keyname-table.h:3966 -msgid "keyboard label|KP_Right" -msgstr "keyboard label|KP_Right" - -#: ../src/keyname-table.h:3967 -msgid "keyboard label|KP_Down" -msgstr "keyboard label|KP_Down" - -#: ../src/keyname-table.h:3968 -msgid "keyboard label|KP_Page_Up" -msgstr "keyboard label|KP_Page_Up" - -#: ../src/keyname-table.h:3969 -msgid "keyboard label|KP_Prior" -msgstr "keyboard label|KP_Prior" - -#: ../src/keyname-table.h:3970 -msgid "keyboard label|KP_Page_Down" -msgstr "keyboard label|KP_Page_Down" - -#: ../src/keyname-table.h:3971 -msgid "keyboard label|KP_Next" -msgstr "keyboard label|KP_Next" - -#: ../src/keyname-table.h:3972 -msgid "keyboard label|KP_End" -msgstr "keyboard label|KP_End" - -#: ../src/keyname-table.h:3973 -msgid "keyboard label|KP_Begin" -msgstr "keyboard label|KP_Begin" - -#: ../src/keyname-table.h:3974 -msgid "keyboard label|KP_Insert" -msgstr "keyboard label|KP_Insert" - -#: ../src/keyname-table.h:3975 -msgid "keyboard label|KP_Delete" -msgstr "keyboard label|KP_Delete" - -#: ../src/keyname-table.h:3976 -msgid "keyboard label|Delete" -msgstr "keyboard label|Delete" +#: ../bus/ibus.desktop.in.h:2 ../ui/gtk/panel.py:97 +msgid "IBus input method framework" +msgstr "IBus input method framework" #: ../ibus/lang.py:40 ../ui/gtk/panel.py:307 ../ui/gtk/panel.py:308 #: ../ui/gtk/panel.py:309 ../ui/gtk/panel.py:310 msgid "Other" msgstr "অন্য" -#: ../ui/gtk/panel.py:97 -msgid "IBus input method framework" -msgstr "IBus input method framework" - #: ../ui/gtk/panel.py:282 msgid "Restart" msgstr "পুনৰাৰম্ভ" @@ -191,25 +47,24 @@ msgstr "অমিতাক্ষ ফুকন (aphukan@fedoraproject.org)" #. create input methods menu #: ../ui/gtk/languagebar.py:84 -msgid "Switch engine" -msgstr "কলঘৰ সলনি কৰক" +msgid "Switch input method" +msgstr "নিবেশ পদ্ধতি সলনি কৰক" #: ../setup/main.py:103 msgid "trigger" msgstr "ট্ৰিগাৰ" #: ../setup/main.py:113 -msgid "next engine" -msgstr "পিছৰ কলঘৰ" +msgid "next input method" +msgstr "পিছৰ নিবেশ পদ্ধতি" #: ../setup/main.py:123 -msgid "prev engine" -msgstr "আগৰ কলঘৰ" +msgid "previous input method" +msgstr "আগৰ নিবেশ পদ্ধতি" #: ../setup/main.py:204 msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "" -"IBus ডেমন আৰম্ভ কৰা হোৱা নাই । আপুনি ইয়াক এতিয়া আৰম্ভ কৰিব বিচাৰে নেকি ?" +msgstr "IBus ডেমন আৰম্ভ কৰা হোৱা নাই । আপুনি ইয়াক এতিয়া আৰম্ভ কৰিব বিচাৰে নেকি ?" #: ../setup/main.py:219 msgid "" @@ -219,8 +74,8 @@ msgid "" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" -"IBus আৰম্ভ কৰা হ'ল! IBus ব্যৱহাৰ কৰিব নোৱাৰিলে, এই শাৰী" -"$HOME/.bashrc ত যোগ দিয়ক, আৰু আপোনাৰ ডেষ্কট'পত পুনঃ প্ৰৱেশ কৰক ।\n" +"IBus আৰম্ভ কৰা হ'ল! IBus ব্যৱহাৰ কৰিব নোৱাৰিলে, এই শাৰী$HOME/.bashrc ত যোগ " +"দিয়ক, আৰু আপোনাৰ ডেষ্কট'পত পুনঃ প্ৰৱেশ কৰক ।\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" @@ -318,7 +173,7 @@ msgstr "" "অনুভূমিক\n" "উলম্ব" -#: ../setup/setup.glade.h:19 +#: ../setup/setup.glade.h:19 ../setup/ibus-setup.desktop.in.h:1 msgid "IBus Preferences" msgstr "IBus পছন্দ" @@ -341,21 +196,21 @@ msgid "Next input method:" msgstr "পিছৰ নিবেশ পদ্ধতি:" #: ../setup/setup.glade.h:25 +msgid "Previous input method:" +msgstr "আগৰ নিবেশ পদ্ধতি" + +#: ../setup/setup.glade.h:26 msgid "Show language panel:" msgstr "ভাষাৰ পেনেল দেখুৱাওক:" -#: ../setup/setup.glade.h:26 +#: ../setup/setup.glade.h:27 msgid "Start ibus on login" msgstr "প্ৰৱেশত ibus আৰম্ভ কৰক" -#: ../setup/setup.glade.h:27 +#: ../setup/setup.glade.h:28 msgid "Use custom font" msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰা হ'ব" -#: ../setup/setup.glade.h:28 -msgid "previous input method:" -msgstr "আগৰ নিবেশ পদ্ধতি:" - #: ../data/ibus.schemas.in.h:1 msgid "Auto Hide" msgstr "স্বয়ংক্ৰিয়ভাবে লুকাওক" @@ -405,8 +260,7 @@ msgid "" "The behavior of language panel. 0 = Always hide, 1 = Auto hide, 2 = Always " "show" msgstr "" -"ভাষাৰ পেনেলৰ আচৰণ । ০ = সদায় লুকাওক, ১ = স্বয়ংক্ৰিয়ভাবে লুকাওক, ২ = সদায় " -"দেখুৱাওক" +"ভাষাৰ পেনেলৰ আচৰণ । ০ = সদায় লুকাওক, ১ = স্বয়ংক্ৰিয়ভাবে লুকাওক, ২ = সদায় দেখুৱাওক" #: ../data/ibus.schemas.in.h:13 msgid "Trigger Hotkey" @@ -428,4 +282,122 @@ msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্ব msgid "[Control+space]" msgstr "[Control+space]" +#~ msgid "keyboard label|BackSpace" +#~ msgstr "keyboard label|BackSpace" + +#~ msgid "keyboard label|Tab" +#~ msgstr "keyboard label|Tab" + +#~ msgid "keyboard label|Return" +#~ msgstr "keyboard label|Return" + +#~ msgid "keyboard label|Pause" +#~ msgstr "keyboard label|Pause" + +#~ msgid "keyboard label|Scroll_Lock" +#~ msgstr "keyboard label|Scroll_Lock" + +#~ msgid "keyboard label|Sys_Req" +#~ msgstr "keyboard label|Sys_Req" + +#~ msgid "keyboard label|Escape" +#~ msgstr "keyboard label|Escape" + +#~ msgid "keyboard label|Multi_key" +#~ msgstr "keyboard label|Multi_key" + +#~ msgid "keyboard label|Home" +#~ msgstr "keyboard label|Home" + +#~ msgid "keyboard label|Left" +#~ msgstr "keyboard label|Left" + +#~ msgid "keyboard label|Up" +#~ msgstr "keyboard label|Up" + +#~ msgid "keyboard label|Right" +#~ msgstr "keyboard label|Right" + +#~ msgid "keyboard label|Down" +#~ msgstr "keyboard label|Down" + +#~ msgid "keyboard label|Page_Up" +#~ msgstr "keyboard label|Page_Up" + +#~ msgid "keyboard label|Page_Down" +#~ msgstr "keyboard label|Page_Down" + +#~ msgid "keyboard label|End" +#~ msgstr "keyboard label|End" + +#~ msgid "keyboard label|Begin" +#~ msgstr "keyboard label|Begin" + +#~ msgid "keyboard label|Print" +#~ msgstr "keyboard label|Print" + +#~ msgid "keyboard label|Insert" +#~ msgstr "keyboard label|Insert" + +#~ msgid "keyboard label|Num_Lock" +#~ msgstr "keyboard label|Num_Lock" + +#~ msgid "keyboard label|KP_Space" +#~ msgstr "keyboard label|KP_Space" + +#~ msgid "keyboard label|KP_Tab" +#~ msgstr "keyboard label|KP_Tab" + +#~ msgid "keyboard label|KP_Enter" +#~ msgstr "keyboard label|KP_Enter" + +#~ msgid "keyboard label|KP_Home" +#~ msgstr "keyboard label|KP_Home" + +#~ msgid "keyboard label|KP_Left" +#~ msgstr "keyboard label|KP_Left" + +#~ msgid "keyboard label|KP_Up" +#~ msgstr "keyboard label|KP_Up" + +#~ msgid "keyboard label|KP_Right" +#~ msgstr "keyboard label|KP_Right" + +#~ msgid "keyboard label|KP_Down" +#~ msgstr "keyboard label|KP_Down" + +#~ msgid "keyboard label|KP_Page_Up" +#~ msgstr "keyboard label|KP_Page_Up" + +#~ msgid "keyboard label|KP_Prior" +#~ msgstr "keyboard label|KP_Prior" + +#~ msgid "keyboard label|KP_Page_Down" +#~ msgstr "keyboard label|KP_Page_Down" + +#~ msgid "keyboard label|KP_Next" +#~ msgstr "keyboard label|KP_Next" + +#~ msgid "keyboard label|KP_End" +#~ msgstr "keyboard label|KP_End" + +#~ msgid "keyboard label|KP_Begin" +#~ msgstr "keyboard label|KP_Begin" + +#~ msgid "keyboard label|KP_Insert" +#~ msgstr "keyboard label|KP_Insert" + +#~ msgid "keyboard label|KP_Delete" +#~ msgstr "keyboard label|KP_Delete" + +#~ msgid "keyboard label|Delete" +#~ msgstr "keyboard label|Delete" + +#~ msgid "Switch engine" +#~ msgstr "কলঘৰ সলনি কৰক" + +#~ msgid "next engine" +#~ msgstr "পিছৰ কলঘৰ" +#~ msgid "prev engine" +#~ msgstr "আগৰ কলঘৰ" diff --git a/po/te.po b/po/te.po index 3b8c0da..9c65afd 100644 --- a/po/te.po +++ b/po/te.po @@ -1,21 +1,21 @@ -# translation of ibus.master.ibus.po to Telugu +# translation of ibus.master.te.po to Telugu # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Krishna Babu K , 2009. msgid "" msgstr "" -"Project-Id-Version: ibus.master.ibus\n" +"Project-Id-Version: ibus.master.te\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-04-07 15:38+0800\n" -"PO-Revision-Date: 2009-04-07 00:39+0530\n" +"POT-Creation-Date: 2009-04-06 11:45+0800\n" +"PO-Revision-Date: 2009-04-14 15:04+0530\n" "Last-Translator: Krishna Babu K \n" "Language-Team: Telugu \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n\n" "\n" #: ../bus/ibus.desktop.in.h:1 @@ -49,23 +49,20 @@ msgstr "కృష్ణబాబు కె 2009." #. create input methods menu #: ../ui/gtk/languagebar.py:84 -#, fuzzy msgid "Switch input method" -msgstr "ఎటువంటి ఇన్పుట్ పద్దతిలేదు" +msgstr "ఇన్పుట్ పద్దతి మార్చుము" #: ../setup/main.py:103 msgid "trigger" msgstr "బిస (ట్రిగ్గర్)" #: ../setup/main.py:113 -#, fuzzy msgid "next input method" -msgstr "తరువాతి ఇన్పుట్ పద్దతి:" +msgstr "తరువాతి ఇన్పుట్ పద్దతి" #: ../setup/main.py:123 -#, fuzzy msgid "previous input method" -msgstr "మునుపటి ఇన్పుట్ పద్దతి:" +msgstr "మునుపటి ఇన్పుట్ పద్దతి" #: ../setup/main.py:204 msgid "IBus daemon is not started. Do you want to start it now?" @@ -201,7 +198,6 @@ msgid "Next input method:" msgstr "తరువాతి ఇన్పుట్ పద్దతి:" #: ../setup/setup.glade.h:25 -#, fuzzy msgid "Previous input method:" msgstr "మునుపటి ఇన్పుట్ పద్దతి:" @@ -285,14 +281,7 @@ msgstr "మలచుకొనిన ఫాంటు వుపయోగించ msgid "Use custom font name for language panel" msgstr "భాషా ప్యానల్ కొరకు మలచుకొనిన ఫాంట్ నామము వుపయోగించుము" -#~ msgid "Switch engine" -#~ msgstr "ఇంజన్‌ను మార్చుము" - -#~ msgid "next engine" -#~ msgstr "తరువాతి యింజన్" - -#~ msgid "prev engine" -#~ msgstr "మునుపటి యింజన్" +#: ../data/ibus.schemas.in.h:17 +msgid "[Control+space]" +msgstr "[Control+space]" -#~ msgid "[Control+space]" -#~ msgstr "[Control+space]" diff --git a/setup/keyboardshortcut.py b/setup/keyboardshortcut.py index a9e2233..f954343 100644 --- a/setup/keyboardshortcut.py +++ b/setup/keyboardshortcut.py @@ -27,6 +27,7 @@ __all__ = ( import gobject import gtk from gtk import gdk +from gtk import keysyms from gettext import dgettext _ = lambda a : dgettext("ibus", a) @@ -217,8 +218,29 @@ class KeyboardShortcutSelection(gtk.VBox): if id != gtk.RESPONSE_OK or not out: return keyevent = out[0] + state = keyevent.state & (gdk.CONTROL_MASK | \ + gdk.SHIFT_MASK | \ + gdk.MOD1_MASK | \ + gdk.META_MASK | \ + gdk.SUPER_MASK | \ + gdk.HYPER_MASK) + if state == 0: + state = state | gdk.RELEASE_MASK + elif keyevent.keyval in (keysyms.Control_L, keysyms.Control_R) and state == gdk.CONTROL_MASK: + state = state | gdk.RELEASE_MASK + elif keyevent.keyval in (keysyms.Shift_L, keysyms.Shift_R) and state == gdk.SHIFT_MASK: + state = state | gdk.RELEASE_MASK + elif keyevent.keyval in (keysyms.Alt_L, keysyms.Alt_R) and state == gdk.MOD1_MASK: + state = state | gdk.RELEASE_MASK + elif keyevent.keyval in (keysyms.Meta_L, keysyms.Meta_R) and state == gdk.META_MASK: + state = state | gdk.RELEASE_MASK + elif keyevent.keyval in (keysyms.Super_L, keysyms.Super_R) and state == gdk.SUPER_MASK: + state = state | gdk.RELEASE_MASK + elif keyevent.keyval in (keysyms.Hyper_L, keysyms.Hyper_R) and state == gdk.HYPER_MASK: + state = state | gdk.RELEASE_MASK + for name, button, mask in self.__modifier_buttons: - if keyevent.state & mask: + if state & mask: button.set_active(True) else: button.set_active(False) diff --git a/src/ibusbus.c b/src/ibusbus.c index 373e5d4..756f8e5 100644 --- a/src/ibusbus.c +++ b/src/ibusbus.c @@ -220,14 +220,17 @@ ibus_bus_init (IBusBus *bus) ibus_bus_connect (bus); - path = g_strdup_printf ("/tmp/ibus-%s/", ibus_get_user_name ()); + path = ibus_get_socket_folder (); + mkdir (path, 0700); + chmod (path, 0700); + + file = g_file_new_for_path (path); priv->monitor = g_file_monitor_directory (file, 0, NULL, NULL); g_signal_connect (priv->monitor, "changed", (GCallback) _changed_cb, bus); g_object_unref (file); - g_free (path); } static void diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c index 95754cf..52547ff 100644 --- a/src/ibusinputcontext.c +++ b/src/ibusinputcontext.c @@ -553,7 +553,10 @@ ibus_input_context_process_key_event (IBusInputContext *context, IBusError *error = NULL; gboolean retval; - if (state & IBUS_FORWARD_MASK) + if (state & IBUS_HANDLED_MASK) + return TRUE; + + if (state & IBUS_IGNORED_MASK) return FALSE; retval = ibus_proxy_call_with_reply ((IBusProxy *) context, diff --git a/src/ibusshare.c b/src/ibusshare.c index c7aa1fe..186be85 100644 --- a/src/ibusshare.c +++ b/src/ibusshare.c @@ -69,6 +69,31 @@ ibus_get_user_name (void) } const gchar * +ibus_get_session_id (void) +{ + return g_getenv("IBUS_SESSION_ID"); +} + +const gchar * +ibus_get_socket_folder (void) +{ + static gchar *folder = NULL; + + if (folder == NULL) { + const gchar *session = ibus_get_session_id (); + if (session && session[0] != '\0') { + folder = g_strdup_printf ("/tmp/ibus-%s-%s", + ibus_get_user_name (), session); + } + else { + folder = g_strdup_printf ("/tmp/ibus-%s", + ibus_get_user_name ()); + } + } + return folder; +} + +const gchar * ibus_get_socket_path (void) { static gchar *path = NULL; @@ -78,7 +103,7 @@ ibus_get_socket_path (void) gchar *display; gchar *displaynumber = "0"; gchar *screennumber = "0"; - const gchar *username = NULL; + const gchar *folder= NULL; gchar *p; if (_display == NULL) { @@ -111,14 +136,14 @@ ibus_get_socket_path (void) } } - username = ibus_get_user_name (); + folder = ibus_get_socket_folder (); if (hostname[0] == '\0') hostname = "unix"; path = g_strdup_printf ( - "/tmp/ibus-%s/ibus-%s-%s", - username, hostname, displaynumber); + "%s/ibus-%s-%s", + folder, hostname, displaynumber); g_free (display); } return path; diff --git a/src/ibusshare.h b/src/ibusshare.h index f3b34c4..4c0c645 100644 --- a/src/ibusshare.h +++ b/src/ibusshare.h @@ -49,6 +49,7 @@ void ibus_set_display (const gchar *display); const gchar *ibus_get_address (void); const gchar *ibus_get_user_name (void); const gchar *ibus_get_socket_path (void); +const gchar *ibus_get_socket_folder (void); const gchar *ibus_keyval_name (guint keyval); guint ibus_keyval_from_name (const gchar *keyval_name); diff --git a/src/ibustypes.h b/src/ibustypes.h index d2f15ba..2f7c0bf 100644 --- a/src/ibustypes.h +++ b/src/ibustypes.h @@ -69,11 +69,13 @@ typedef enum IBUS_BUTTON5_MASK = 1 << 12, /* The next few modifiers are used by XKB, so we skip to the end. - * Bits 15 - 24 are currently unused. Bit 29 is used internally. + * Bits 15 - 23 are currently unused. Bit 29 is used internally. */ - /* forward mask */ + /* 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,