diff --git a/bus/server.c b/bus/server.c
index 7245bd3..425dd86 100644
--- a/bus/server.c
+++ b/bus/server.c
@@ -90,10 +90,13 @@ bus_server_listen (BusServer *server)
gboolean retval;
path = g_strdup_printf("/tmp/ibus-%s", ibus_get_user_name ());
- mkdir (path, 0775);
+ 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);
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/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/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/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,