ibus/ibus-HEAD.patch
2009-04-15 00:04:05 +00:00

697 lines
22 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 @@
<owner>ibus</owner>
<type>list</type>
<list_type>string</list_type>
- <default>[Control+space,Zenkaku_Hankaku,Alt+Zenkaku_Hankaku,Alt+grave,Hangul]</default>
+ <default>[Control+space,Zenkaku_Hankaku,Alt+Zenkaku_Hankaku,Alt+grave,Hangul,Alt+Release+Alt_R]</default>
<locale name="C">
<short>Trigger Hotkey</short>
<long>Trigger hotkey for enable or disable input context</long>
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 <aphukan@fedoraproject.org>\n"
"Language-Team: Assamese <fedora-trans-as@redhat.com>\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 <kkrothap@redhat.com>, 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 <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\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 "కృష్ణబాబు కె <kkrothap@redhat.com> 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,