Fixed Bug 750484 - support reloading Xmodmap
Fixed Bug 753781 - ibus-x11 needs async for hangul ibus_commit_text.
This commit is contained in:
parent
3ef409f362
commit
481f2eee59
2
.gitignore
vendored
2
.gitignore
vendored
@ -28,3 +28,5 @@ ibus-1.3.6.tar.gz
|
|||||||
/ibus-gjs-3.2.1.20111028.tar.gz
|
/ibus-gjs-3.2.1.20111028.tar.gz
|
||||||
/ibus-gjs-3.0.2.20111104.tar.gz
|
/ibus-gjs-3.0.2.20111104.tar.gz
|
||||||
/ibus-gjs-3.2.1.20111104.tar.gz
|
/ibus-gjs-3.2.1.20111104.tar.gz
|
||||||
|
/ibus-gjs-3.0.2.20111118.tar.gz
|
||||||
|
/ibus-gjs-3.2.1.20111118.tar.gz
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
From 10bff3bb3c4ea8ec1316beb47b6d8fcbdfd357bf Mon Sep 17 00:00:00 2001
|
From a8f02d4be33f87cf97039736407cd13e795b992b Mon Sep 17 00:00:00 2001
|
||||||
From: fujiwarat <takao.fujiwara1@gmail.com>
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
Date: Fri, 4 Nov 2011 18:17:29 +0900
|
Date: Fri, 18 Nov 2011 18:05:42 +0900
|
||||||
Subject: [PATCH] Add XKB layouts
|
Subject: [PATCH] Add XKB layouts
|
||||||
|
|
||||||
---
|
---
|
||||||
Makefile.am | 7 +
|
Makefile.am | 7 +
|
||||||
configure.ac | 56 +
|
configure.ac | 56 +
|
||||||
data/ibus.schemas.in | 36 +
|
data/ibus.schemas.in | 47 +
|
||||||
ibus-1.0.pc.in | 2 +
|
ibus-1.0.pc.in | 2 +
|
||||||
ibus/Makefile.am | 26 +
|
ibus/Makefile.am | 26 +
|
||||||
ibus/__init__.py | 2 +
|
ibus/__init__.py | 2 +
|
||||||
ibus/bus.py | 3 +
|
ibus/bus.py | 3 +
|
||||||
ibus/interface/iibus.py | 3 +
|
ibus/interface/iibus.py | 3 +
|
||||||
ibus/xkblayout.py.in | 231 +++
|
ibus/xkblayout.py.in | 360 ++++
|
||||||
ibus/xkbxml.py.in | 419 ++++
|
ibus/xkbxml.py.in | 419 ++++
|
||||||
setup/Makefile.am | 1 +
|
setup/Makefile.am | 1 +
|
||||||
setup/enginecombobox.py | 7 +-
|
setup/enginecombobox.py | 7 +-
|
||||||
@ -38,7 +38,7 @@ Subject: [PATCH] Add XKB layouts
|
|||||||
xkb/xkblib.h | 41 +
|
xkb/xkblib.h | 41 +
|
||||||
xkb/xkbxml.c | 345 ++++
|
xkb/xkbxml.c | 345 ++++
|
||||||
xkb/xkbxml.h | 113 ++
|
xkb/xkbxml.h | 113 ++
|
||||||
34 files changed, 9524 insertions(+), 4 deletions(-)
|
34 files changed, 9664 insertions(+), 4 deletions(-)
|
||||||
create mode 100644 ibus/xkblayout.py.in
|
create mode 100644 ibus/xkblayout.py.in
|
||||||
create mode 100644 ibus/xkbxml.py.in
|
create mode 100644 ibus/xkbxml.py.in
|
||||||
create mode 100644 setup/xkbsetup.py
|
create mode 100644 setup/xkbsetup.py
|
||||||
@ -166,10 +166,10 @@ index f452666..227e28e 100644
|
|||||||
Build gconf modules $enable_gconf
|
Build gconf modules $enable_gconf
|
||||||
Build memconf modules $enable_memconf
|
Build memconf modules $enable_memconf
|
||||||
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
|
diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in
|
||||||
index 663358c..8979515 100644
|
index 663358c..e0a6a37 100644
|
||||||
--- a/data/ibus.schemas.in
|
--- a/data/ibus.schemas.in
|
||||||
+++ b/data/ibus.schemas.in
|
+++ b/data/ibus.schemas.in
|
||||||
@@ -191,6 +191,42 @@
|
@@ -191,6 +191,53 @@
|
||||||
</locale>
|
</locale>
|
||||||
</schema>
|
</schema>
|
||||||
<schema>
|
<schema>
|
||||||
@ -197,6 +197,17 @@ index 663358c..8979515 100644
|
|||||||
+ </locale>
|
+ </locale>
|
||||||
+ </schema>
|
+ </schema>
|
||||||
+ <schema>
|
+ <schema>
|
||||||
|
+ <key>/schemas/desktop/ibus/general/use_xmodmap</key>
|
||||||
|
+ <applyto>/desktop/ibus/general/use_xmodmap</applyto>
|
||||||
|
+ <owner>ibus</owner>
|
||||||
|
+ <type>bool</type>
|
||||||
|
+ <default>true</default>
|
||||||
|
+ <locale name="C">
|
||||||
|
+ <short>Use xmodmap</short>
|
||||||
|
+ <long>Run xmodmap if .xmodmap/.Xmodmap exists.</long>
|
||||||
|
+ </locale>
|
||||||
|
+ </schema>
|
||||||
|
+ <schema>
|
||||||
+ <key>/schemas/desktop/ibus/general/xkb_latin_layouts</key>
|
+ <key>/schemas/desktop/ibus/general/xkb_latin_layouts</key>
|
||||||
+ <applyto>/desktop/ibus/general/xkb_latin_layouts</applyto>
|
+ <applyto>/desktop/ibus/general/xkb_latin_layouts</applyto>
|
||||||
+ <owner>ibus</owner>
|
+ <owner>ibus</owner>
|
||||||
@ -309,10 +320,10 @@ index 678d517..7de56fc 100644
|
|||||||
|
|
||||||
diff --git a/ibus/xkblayout.py.in b/ibus/xkblayout.py.in
|
diff --git a/ibus/xkblayout.py.in b/ibus/xkblayout.py.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..9d7468f
|
index 0000000..c0c95ce
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/ibus/xkblayout.py.in
|
+++ b/ibus/xkblayout.py.in
|
||||||
@@ -0,0 +1,231 @@
|
@@ -0,0 +1,360 @@
|
||||||
+# vim:set et sts=4 sw=4:
|
+# vim:set et sts=4 sw=4:
|
||||||
+#
|
+#
|
||||||
+# ibus - The Input Bus
|
+# ibus - The Input Bus
|
||||||
@ -341,15 +352,21 @@ index 0000000..9d7468f
|
|||||||
+ )
|
+ )
|
||||||
+
|
+
|
||||||
+import os, sys, time
|
+import os, sys, time
|
||||||
|
+import glib
|
||||||
+
|
+
|
||||||
+XKB_COMMAND = @XKB_COMMAND@
|
+XKB_COMMAND = @XKB_COMMAND@
|
||||||
+XKB_SESSION_TIME_OUT = 30.0
|
+XKB_SESSION_TIME_OUT = 30.0
|
||||||
|
+XMODMAP_CMD = 'xmodmap'
|
||||||
|
+XMODMAP_KNOWN_FILES = ['.xmodmap', '.xmodmaprc', '.Xmodmap', '.Xmodmaprc']
|
||||||
+
|
+
|
||||||
+class XKBLayout():
|
+class XKBLayout():
|
||||||
+ def __init__(self, config = None, command=XKB_COMMAND):
|
+ def __init__(self, config = None, command=XKB_COMMAND):
|
||||||
+ self.__config = config
|
+ self.__config = config
|
||||||
+ self.__command = command
|
+ self.__command = command
|
||||||
+ self.__use_xkb = True
|
+ self.__use_xkb = True
|
||||||
|
+ self.__xkb_pid = None
|
||||||
|
+ self.__xmodmap_pid = None
|
||||||
|
+ self.__use_xmodmap = True
|
||||||
+ if self.__command == None:
|
+ if self.__command == None:
|
||||||
+ self.__use_xkb = False
|
+ self.__use_xkb = False
|
||||||
+ self.__default_layout = self.get_layout()
|
+ self.__default_layout = self.get_layout()
|
||||||
@ -363,6 +380,9 @@ index 0000000..9d7468f
|
|||||||
+ self.__xkb_latin_layouts = list(self.__config.get_value('general',
|
+ self.__xkb_latin_layouts = list(self.__config.get_value('general',
|
||||||
+ 'xkb_latin_layouts',
|
+ 'xkb_latin_layouts',
|
||||||
+ []))
|
+ []))
|
||||||
|
+ self.__use_xmodmap = bool(self.__config.get_value('general',
|
||||||
|
+ 'use_xmodmap',
|
||||||
|
+ True))
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
+ def __get_model_from_layout(self, layout):
|
+ def __get_model_from_layout(self, layout):
|
||||||
@ -391,6 +411,44 @@ index 0000000..9d7468f
|
|||||||
+ break
|
+ break
|
||||||
+ return retval
|
+ return retval
|
||||||
+
|
+
|
||||||
|
+ def __get_userhome(self):
|
||||||
|
+ if 'HOME' not in os.environ:
|
||||||
|
+ import pwd
|
||||||
|
+ userhome = pwd.getpwuid(os.getuid()).pw_dir
|
||||||
|
+ else:
|
||||||
|
+ userhome = os.environ['HOME']
|
||||||
|
+ userhome = userhome.rstrip('/')
|
||||||
|
+ return userhome
|
||||||
|
+
|
||||||
|
+ def __get_fullpath(self, command):
|
||||||
|
+ if 'PATH' in os.environ:
|
||||||
|
+ envpath = os.environ['PATH']
|
||||||
|
+ else:
|
||||||
|
+ envpath = os.defpath
|
||||||
|
+ PATH = envpath.split(os.pathsep)
|
||||||
|
+ for dir in PATH:
|
||||||
|
+ filepath = os.path.join(dir, command)
|
||||||
|
+ if os.path.exists(filepath):
|
||||||
|
+ return filepath
|
||||||
|
+ return None
|
||||||
|
+
|
||||||
|
+ def __set_layout_cb(self, pid, status):
|
||||||
|
+ if self.__xkb_pid != pid:
|
||||||
|
+ print >> sys.stderr, \
|
||||||
|
+ 'ibus.xkblayout: set_layout_cb has another pid'
|
||||||
|
+ return
|
||||||
|
+ self.__xkb_pid.close()
|
||||||
|
+ self.__xkb_pid = None
|
||||||
|
+ self.set_xmodmap()
|
||||||
|
+
|
||||||
|
+ def __set_xmodmap_cb(self, pid, status):
|
||||||
|
+ if self.__xmodmap_pid != pid:
|
||||||
|
+ print >> sys.stderr, \
|
||||||
|
+ 'ibus.xkblayout: set_xmodmap_cb has another pid'
|
||||||
|
+ return
|
||||||
|
+ self.__xmodmap_pid.close()
|
||||||
|
+ self.__xmodmap_pid = None
|
||||||
|
+
|
||||||
+ def use_xkb(self, enable):
|
+ def use_xkb(self, enable):
|
||||||
+ if self.__command == None:
|
+ if self.__command == None:
|
||||||
+ return
|
+ return
|
||||||
@ -486,7 +544,6 @@ index 0000000..9d7468f
|
|||||||
+ return
|
+ return
|
||||||
+ args = []
|
+ args = []
|
||||||
+ args.append(self.__command)
|
+ args.append(self.__command)
|
||||||
+ args.append(os.path.basename(self.__command))
|
|
||||||
+ args.append('--layout')
|
+ args.append('--layout')
|
||||||
+ args.append(layout)
|
+ args.append(layout)
|
||||||
+ if model != None:
|
+ if model != None:
|
||||||
@ -495,8 +552,10 @@ index 0000000..9d7468f
|
|||||||
+ if option != None:
|
+ if option != None:
|
||||||
+ args.append('--option')
|
+ args.append('--option')
|
||||||
+ args.append(option)
|
+ args.append(option)
|
||||||
+ pid = os.spawnl(os.P_NOWAIT, *args)
|
+ pid = glib.spawn_async(argv=args,
|
||||||
+ os.waitpid(pid, 0)
|
+ flags=glib.SPAWN_DO_NOT_REAP_CHILD)[0]
|
||||||
|
+ self.__xkb_pid = pid
|
||||||
|
+ glib.child_watch_add(self.__xkb_pid, self.__set_layout_cb)
|
||||||
+
|
+
|
||||||
+ def set_default_layout(self, layout='default', model='default'):
|
+ def set_default_layout(self, layout='default', model='default'):
|
||||||
+ if not self.__use_xkb:
|
+ if not self.__use_xkb:
|
||||||
@ -544,6 +603,87 @@ index 0000000..9d7468f
|
|||||||
+ self.__default_layout = self.get_layout()
|
+ self.__default_layout = self.get_layout()
|
||||||
+ self.__default_model = self.get_model()
|
+ self.__default_model = self.get_model()
|
||||||
+ self.__default_option = self.get_option()
|
+ self.__default_option = self.get_option()
|
||||||
|
+
|
||||||
|
+ def set_xmodmap(self):
|
||||||
|
+ if not self.__use_xmodmap:
|
||||||
|
+ return
|
||||||
|
+ if self.__xmodmap_pid != None:
|
||||||
|
+ return
|
||||||
|
+ xmodmap_cmdpath = self.__get_fullpath(XMODMAP_CMD)
|
||||||
|
+ if xmodmap_cmdpath == None:
|
||||||
|
+ xmodmap_cmdpath = XMODMAP_CMD
|
||||||
|
+ for xmodmap_file in XMODMAP_KNOWN_FILES:
|
||||||
|
+ xmodmap_filepath = os.path.join(self.__get_userhome(), xmodmap_file)
|
||||||
|
+ if not os.path.exists(xmodmap_filepath):
|
||||||
|
+ continue
|
||||||
|
+ pid = glib.spawn_async(argv=[xmodmap_cmdpath, xmodmap_filepath],
|
||||||
|
+ flags=glib.SPAWN_DO_NOT_REAP_CHILD)[0]
|
||||||
|
+ self.__xmodmap_pid = pid
|
||||||
|
+ glib.child_watch_add(self.__xmodmap_pid, self.__set_xmodmap_cb)
|
||||||
|
+ break
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+def test():
|
||||||
|
+ import gtk
|
||||||
|
+ import ibus
|
||||||
|
+
|
||||||
|
+ window = None
|
||||||
|
+ config = None
|
||||||
|
+ xkblayout = None
|
||||||
|
+
|
||||||
|
+ def __destroy(*args):
|
||||||
|
+ window.hide()
|
||||||
|
+ gtk.main_quit()
|
||||||
|
+
|
||||||
|
+ def __test_set_session_xkb(button):
|
||||||
|
+ xkblayout.set_layout('default')
|
||||||
|
+ print 'Reset the default keymap'
|
||||||
|
+ print 'Layout:', xkblayout.get_default_layout()
|
||||||
|
+ print 'Option:', xkblayout.get_default_option()
|
||||||
|
+
|
||||||
|
+ def __test_set_user_xkb(button):
|
||||||
|
+ layout = 'us'
|
||||||
|
+ model = 'default'
|
||||||
|
+ option = 'default'
|
||||||
|
+ if len(sys.argv) > 1:
|
||||||
|
+ layout = sys.argv[1]
|
||||||
|
+ if len(sys.argv) > 2:
|
||||||
|
+ model = sys.argv[2]
|
||||||
|
+ if model == 'None':
|
||||||
|
+ model = None
|
||||||
|
+ if len(sys.argv) > 3:
|
||||||
|
+ option = sys.argv[3]
|
||||||
|
+ if option == 'None':
|
||||||
|
+ optoin = None
|
||||||
|
+ xkblayout.set_layout(layout, model, option)
|
||||||
|
+ print 'Test set_layout:', layout, model, option
|
||||||
|
+
|
||||||
|
+ if ibus.get_address() != None:
|
||||||
|
+ bus = ibus.Bus()
|
||||||
|
+ config = bus.get_config()
|
||||||
|
+ else:
|
||||||
|
+ print 'no ibus'
|
||||||
|
+ xkblayout = XKBLayout(config)
|
||||||
|
+ print 'Layout:', xkblayout.get_default_layout()
|
||||||
|
+ print 'Option:', xkblayout.get_default_option()
|
||||||
|
+ window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
|
+ window.connect('destroy', __destroy)
|
||||||
|
+ vb = gtk.VBox()
|
||||||
|
+ window.add(vb)
|
||||||
|
+ b = gtk.Button('Test xkb')
|
||||||
|
+ b.connect('clicked', __test_set_user_xkb)
|
||||||
|
+ vb.add(b)
|
||||||
|
+ b = gtk.Button('Reset the default xkb')
|
||||||
|
+ b.connect('clicked', __test_set_session_xkb)
|
||||||
|
+ vb.add(b)
|
||||||
|
+ window.show_all()
|
||||||
|
+ if config != None:
|
||||||
|
+ ibus.main()
|
||||||
|
+ else:
|
||||||
|
+ gtk.main()
|
||||||
|
+
|
||||||
|
+if __name__ == '__main__':
|
||||||
|
+ test()
|
||||||
diff --git a/ibus/xkbxml.py.in b/ibus/xkbxml.py.in
|
diff --git a/ibus/xkbxml.py.in b/ibus/xkbxml.py.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..9407c13
|
index 0000000..9407c13
|
||||||
@ -2803,7 +2943,7 @@ index 0000000..6986b5c
|
|||||||
+G_END_DECLS
|
+G_END_DECLS
|
||||||
+#endif
|
+#endif
|
||||||
diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
|
diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
|
||||||
index 90be1d5..8804634 100644
|
index f71a36d..a202d13 100644
|
||||||
--- a/ui/gtk/panel.py
|
--- a/ui/gtk/panel.py
|
||||||
+++ b/ui/gtk/panel.py
|
+++ b/ui/gtk/panel.py
|
||||||
@@ -132,6 +132,22 @@ class Panel(ibus.PanelBase):
|
@@ -132,6 +132,22 @@ class Panel(ibus.PanelBase):
|
||||||
|
173
ibus-HEAD.patch
173
ibus-HEAD.patch
@ -323,3 +323,176 @@ index 0a4f3fb..059d660 100644
|
|||||||
--
|
--
|
||||||
1.7.6.4
|
1.7.6.4
|
||||||
|
|
||||||
|
From a8c21dd867f4a9e1c37cae4f6509af1491c5fc96 Mon Sep 17 00:00:00 2001
|
||||||
|
From: fujiwarat <takao.fujiwara1@gmail.com>
|
||||||
|
Date: Thu, 17 Nov 2011 15:10:05 +0900
|
||||||
|
Subject: [PATCH] Use ibus_input_context_process_key_event_async in ibus-x11
|
||||||
|
|
||||||
|
---
|
||||||
|
client/x11/main.c | 115 ++++++++++++++++++++++++++++++++++++++++++++---------
|
||||||
|
1 files changed, 96 insertions(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/client/x11/main.c b/client/x11/main.c
|
||||||
|
index 0ba826c..8611bfc 100644
|
||||||
|
--- a/client/x11/main.c
|
||||||
|
+++ b/client/x11/main.c
|
||||||
|
@@ -116,6 +116,8 @@ static gint g_debug_level = 0;
|
||||||
|
|
||||||
|
static IBusBus *_bus = NULL;
|
||||||
|
|
||||||
|
+static gboolean _use_sync_mode = FALSE;
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
_xim_preedit_start (XIMS xims, const X11IC *x11ic)
|
||||||
|
{
|
||||||
|
@@ -443,6 +445,31 @@ xim_unset_ic_focus (XIMS xims, IMChangeFocusStruct *call_data)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
+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 (retval == FALSE) {
|
||||||
|
+ IMForwardEvent (_xims, (XPointer) pfe);
|
||||||
|
+ }
|
||||||
|
+ g_free (pfe);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int
|
||||||
|
xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
|
||||||
|
{
|
||||||
|
@@ -469,32 +496,61 @@ xim_forward_event (XIMS xims, IMForwardEventStruct *call_data)
|
||||||
|
if (event.type == GDK_KEY_RELEASE) {
|
||||||
|
event.state |= IBUS_RELEASE_MASK;
|
||||||
|
}
|
||||||
|
- 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);
|
||||||
|
+
|
||||||
|
+ 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;
|
||||||
|
}
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
|
||||||
|
- IMForwardEventStruct fe;
|
||||||
|
- memset (&fe, 0, sizeof (fe));
|
||||||
|
+ 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;
|
||||||
|
+ 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);
|
||||||
|
+ IMForwardEvent (_xims, (XPointer) &fe);
|
||||||
|
|
||||||
|
- return 1;
|
||||||
|
+ retval = 1;
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ IMForwardEventStruct *pfe;
|
||||||
|
+
|
||||||
|
+ pfe = g_new0 (IMForwardEventStruct, 1);
|
||||||
|
+ pfe->major_code = XIM_FORWARD_EVENT;
|
||||||
|
+ pfe->icid = x11ic->icid;
|
||||||
|
+ pfe->connect_id = x11ic->connect_id;
|
||||||
|
+ pfe->sync_bit = 0;
|
||||||
|
+ pfe->serial_number = 0L;
|
||||||
|
+ memcpy (&pfe->event, xevent, sizeof (XKeyEvent));
|
||||||
|
+
|
||||||
|
+ 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#undef _XIM_COPY_XKEYEVENT
|
||||||
|
+
|
||||||
|
|
||||||
|
static int
|
||||||
|
xim_open (XIMS xims, IMOpenStruct *call_data)
|
||||||
|
@@ -897,6 +953,25 @@ _context_disabled_cb (IBusInputContext *context,
|
||||||
|
_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)
|
||||||
|
{
|
||||||
|
@@ -909,6 +984,8 @@ _init_ibus (void)
|
||||||
|
|
||||||
|
g_signal_connect (_bus, "disconnected",
|
||||||
|
G_CALLBACK (_bus_disconnected_cb), NULL);
|
||||||
|
+
|
||||||
|
+ _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
--
|
||||||
|
1.7.6.4
|
||||||
|
|
||||||
|
14
ibus.spec
14
ibus.spec
@ -7,16 +7,16 @@
|
|||||||
|
|
||||||
%if 0%{?fedora} > 16
|
%if 0%{?fedora} > 16
|
||||||
%define have_bridge_hotkey 1
|
%define have_bridge_hotkey 1
|
||||||
%define ibus_gjs_version 3.2.1.20111104
|
%define ibus_gjs_version 3.2.1.20111118
|
||||||
%define ibus_gjs_build_failure 1
|
%define ibus_gjs_build_failure 1
|
||||||
%else
|
%else
|
||||||
%if 0%{?fedora} > 15
|
%if 0%{?fedora} > 15
|
||||||
%define have_bridge_hotkey 1
|
%define have_bridge_hotkey 1
|
||||||
%define ibus_gjs_version 3.2.1.20111104
|
%define ibus_gjs_version 3.2.1.20111118
|
||||||
%define ibus_gjs_build_failure 0
|
%define ibus_gjs_build_failure 0
|
||||||
%else
|
%else
|
||||||
%define have_bridge_hotkey 0
|
%define have_bridge_hotkey 0
|
||||||
%define ibus_gjs_version 3.0.2.20111104
|
%define ibus_gjs_version 3.0.2.20111118
|
||||||
%define ibus_gjs_build_failure 0
|
%define ibus_gjs_build_failure 0
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
Name: ibus
|
Name: ibus
|
||||||
Version: 1.4.0
|
Version: 1.4.0
|
||||||
Release: 10%{?dist}
|
Release: 11%{?dist}
|
||||||
Summary: Intelligent Input Bus for Linux OS
|
Summary: Intelligent Input Bus for Linux OS
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
@ -406,6 +406,12 @@ fi
|
|||||||
%{_datadir}/gtk-doc/html/*
|
%{_datadir}/gtk-doc/html/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Nov 18 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-11
|
||||||
|
- Updated ibus-541492-xkb.patch
|
||||||
|
Fixed Bug 750484 - support reloading Xmodmap
|
||||||
|
- Updated ibus-HEAD.patch
|
||||||
|
Fixed Bug 753781 - ibus-x11 needs async for hangul ibus_commit_text.
|
||||||
|
|
||||||
* Fri Nov 04 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-10
|
* Fri Nov 04 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.4.0-10
|
||||||
- Updated ibus-xx-bridge-hotkey.patch for f16
|
- Updated ibus-xx-bridge-hotkey.patch for f16
|
||||||
Fixed no XKB languages from layout only. e.g. in(eng).
|
Fixed no XKB languages from layout only. e.g. in(eng).
|
||||||
|
4
sources
4
sources
@ -1,3 +1,3 @@
|
|||||||
b4f063794e89c71eb1f8cb543210da30 ibus-1.4.0.tar.gz
|
b4f063794e89c71eb1f8cb543210da30 ibus-1.4.0.tar.gz
|
||||||
da885c3a62f509327859d1ed65544693 ibus-gjs-3.0.2.20111104.tar.gz
|
4257048de65ea404389bb941a51db667 ibus-gjs-3.0.2.20111118.tar.gz
|
||||||
d49a93c05a69bcdd65a839381d9fbaa1 ibus-gjs-3.2.1.20111104.tar.gz
|
ff5fdd8df5c64f3253ec37db135f336a ibus-gjs-3.2.1.20111118.tar.gz
|
||||||
|
Loading…
Reference in New Issue
Block a user