Update to 1.3.2-11.
This commit is contained in:
parent
480804d4c3
commit
01b9e72fe7
621
ibus-m17n-default-xml-override.patch
Normal file
621
ibus-m17n-default-xml-override.patch
Normal file
@ -0,0 +1,621 @@
|
||||
From 736e3f89d3afe368bec030b1f01d36b417fcac5c Mon Sep 17 00:00:00 2001
|
||||
From: Daiki Ueno <ueno@unixuser.org>
|
||||
Date: Wed, 31 Aug 2011 11:44:46 +0900
|
||||
Subject: [PATCH 1/5] Update the format of default.xml to allow override.
|
||||
|
||||
This patch allows value inheritance from the previous matches.
|
||||
With the new format:
|
||||
|
||||
<engines>
|
||||
<engine>
|
||||
<name>*</name>
|
||||
<rank>0</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ja:*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ja:anthy</name>
|
||||
<rank>1</rank>
|
||||
</engine>
|
||||
</engines>
|
||||
|
||||
We will get preedit-highlight == TRUE and rank == 1 for m17n:ja:anthy.
|
||||
---
|
||||
src/Makefile.am | 3 +-
|
||||
src/default.xml.in.in | 221 +++++++++++++++++++------------------------------
|
||||
src/engine.c | 2 +
|
||||
src/m17nutil.c | 68 +++++++---------
|
||||
src/m17nutil.h | 1 +
|
||||
src/test.c | 66 +++++++++++++++
|
||||
6 files changed, 186 insertions(+), 175 deletions(-)
|
||||
create mode 100644 src/test.c
|
||||
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 282128a..e354149 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -40,11 +40,10 @@ TESTS = \
|
||||
|
||||
|
||||
test_m17n_SOURCES = \
|
||||
- m17nutil.c \
|
||||
+ test.c \
|
||||
$(NULL)
|
||||
test_m17n_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
- -DDEBUG \
|
||||
$(NULL)
|
||||
test_m17n_LDADD = \
|
||||
libm17ncommon.a \
|
||||
diff --git a/src/default.xml.in.in b/src/default.xml.in.in
|
||||
index 5c5d67d..dc93fd3 100644
|
||||
--- a/src/default.xml.in.in
|
||||
+++ b/src/default.xml.in.in
|
||||
@@ -1,246 +1,197 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<engines>
|
||||
<!-- This file defines the default config value for each
|
||||
- engine. The "engine" elements below are checked in
|
||||
- first-to-last order and a "name" element in an "engine"
|
||||
- element allows wildcard patterns. Please keep more
|
||||
- specific entries to appear first. -->
|
||||
- <!-- Indic engines which represent languages. -->
|
||||
+ engine. A "name" element in an "engine" element allows
|
||||
+ wildcard patterns. "engine" elements are evaluated in
|
||||
+ first-to-last order and the latter match may override the
|
||||
+ existing default. -->
|
||||
+ <!-- Default for other engines. -->
|
||||
+ <engine>
|
||||
+ <name>m17n:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ </engine>
|
||||
+ <!-- Indic engines should be selected by default:
|
||||
+ https://bugzilla.redhat.com/show_bug.cgi?id=640896 -->
|
||||
+ <engine>
|
||||
+ <name>m17n:as:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:bn:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:gu:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:hi:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:kn:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ks:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:mai:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ml:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:mr:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ne:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:or:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:pa:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sa:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sd:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:si:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ta:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:te:*</name>
|
||||
+ <rank>1</rank>
|
||||
+ </engine>
|
||||
+ <!-- Assign higher rank to Indic engines which represent each
|
||||
+ language. -->
|
||||
<engine>
|
||||
<name>m17n:as:phonetic</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:bn:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:gu:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:hi:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:kn:kgp</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ks:kbd</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:mai:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ml:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:mr:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ne:rom</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:or:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:pa:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sa:harvard-kyoto</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sd:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:si:wijesekera</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ta:tamil99</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:te:inscript</name>
|
||||
<rank>2</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
- <!-- Samanala should have lower rank than other Sinhala
|
||||
- engines since it is the only non-keyboard input method in
|
||||
- Sinhala. -->
|
||||
+ <!-- Assign lower rank to Sinhala Samanala since it is a
|
||||
+ non-keyboard input method in Sinhala. -->
|
||||
<engine>
|
||||
<name>m17n:si:samanala</name>
|
||||
<rank>0</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <!-- Chinese and Japanese engines which require preedit decoration. -->
|
||||
- <engine>
|
||||
- <name>m17n:ja:anthy</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
+ <!-- Some CJK engines use preedit. -->
|
||||
<engine>
|
||||
<name>m17n:zh:cangjie</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:py-b5</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:py-gb</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:py</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:quick</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:tonepy-b5</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:tonepy-gb</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:zh:tonepy</name>
|
||||
- <rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:zh:util</name>
|
||||
- <rank>0</rank>
|
||||
+ <name>m17n:ja:anthy</name>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
- <!-- Other Indic engines should be selected by default:
|
||||
- https://bugzilla.redhat.com/show_bug.cgi?id=640896 -->
|
||||
- <engine>
|
||||
- <name>m17n:as:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:bn:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:gu:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:hi:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:kn:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:ks:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:mai:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:ml:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:mr:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:ne:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:or:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:pa:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:sa:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:sd:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:si:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:ta:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:te:*</name>
|
||||
- <rank>1</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
- <!-- Default for other engines. -->
|
||||
- <engine>
|
||||
- <name>m17n:*</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>FALSE</preedit-highlight>
|
||||
- </engine>
|
||||
</engines>
|
||||
diff --git a/src/engine.c b/src/engine.c
|
||||
index b68b13e..f1e3068 100644
|
||||
--- a/src/engine.c
|
||||
+++ b/src/engine.c
|
||||
@@ -290,6 +290,8 @@ ibus_m17n_engine_class_init (IBusM17NEngineClass *klass)
|
||||
&klass->lookup_table_orientation))
|
||||
klass->lookup_table_orientation = IBUS_ORIENTATION_SYSTEM;
|
||||
|
||||
+ ibus_m17n_engine_config_free (engine_config);
|
||||
+
|
||||
g_signal_connect (config, "value-changed",
|
||||
G_CALLBACK(ibus_m17n_config_value_changed),
|
||||
klass);
|
||||
diff --git a/src/m17nutil.c b/src/m17nutil.c
|
||||
index 1150cc4..00b7194 100644
|
||||
--- a/src/m17nutil.c
|
||||
+++ b/src/m17nutil.c
|
||||
@@ -9,12 +9,18 @@ static MConverter *utf8_converter = NULL;
|
||||
|
||||
#define DEFAULT_XML (SETUPDIR "/default.xml")
|
||||
|
||||
-struct _IBusM17NEngineConfigNode {
|
||||
+typedef enum {
|
||||
+ ENGINE_CONFIG_RANK_MASK = 1 << 0,
|
||||
+ ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 1
|
||||
+} EngineConfigMask;
|
||||
+
|
||||
+struct _EngineConfigNode {
|
||||
gchar *name;
|
||||
+ EngineConfigMask mask;
|
||||
IBusM17NEngineConfig config;
|
||||
};
|
||||
|
||||
-typedef struct _IBusM17NEngineConfigNode IBusM17NEngineConfigNode;
|
||||
+typedef struct _EngineConfigNode EngineConfigNode;
|
||||
|
||||
static GSList *config_list = NULL;
|
||||
|
||||
@@ -253,20 +259,31 @@ ibus_m17n_list_engines (void)
|
||||
IBusM17NEngineConfig *
|
||||
ibus_m17n_get_engine_config (const gchar *engine_name)
|
||||
{
|
||||
+ IBusM17NEngineConfig *config = g_slice_new0 (IBusM17NEngineConfig);
|
||||
GSList *p;
|
||||
|
||||
for (p = config_list; p != NULL; p = p->next) {
|
||||
- IBusM17NEngineConfigNode *cnode = p->data;
|
||||
+ EngineConfigNode *cnode = p->data;
|
||||
|
||||
- if (g_pattern_match_simple (cnode->name, engine_name))
|
||||
- return &cnode->config;
|
||||
+ if (g_pattern_match_simple (cnode->name, engine_name)) {
|
||||
+ if (cnode->mask & ENGINE_CONFIG_RANK_MASK)
|
||||
+ config->rank = cnode->config.rank;
|
||||
+ if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK)
|
||||
+ config->preedit_highlight = cnode->config.preedit_highlight;
|
||||
+ }
|
||||
}
|
||||
- g_return_val_if_reached (NULL);
|
||||
+ return config;
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+ibus_m17n_engine_config_free (IBusM17NEngineConfig *config)
|
||||
+{
|
||||
+ g_slice_free (IBusM17NEngineConfig, config);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
-ibus_m17n_engine_config_parse_xml_node (IBusM17NEngineConfigNode *cnode,
|
||||
- XMLNode *node)
|
||||
+ibus_m17n_engine_config_parse_xml_node (EngineConfigNode *cnode,
|
||||
+ XMLNode *node)
|
||||
{
|
||||
GList *p;
|
||||
|
||||
@@ -280,6 +297,7 @@ ibus_m17n_engine_config_parse_xml_node (IBusM17NEngineConfigNode *cnode,
|
||||
}
|
||||
if (g_strcmp0 (sub_node->name , "rank") == 0) {
|
||||
cnode->config.rank = atoi (sub_node->text);
|
||||
+ cnode->mask |= ENGINE_CONFIG_RANK_MASK;
|
||||
continue;
|
||||
}
|
||||
if (g_strcmp0 (sub_node->name , "preedit-highlight") == 0) {
|
||||
@@ -288,6 +306,7 @@ ibus_m17n_engine_config_parse_xml_node (IBusM17NEngineConfigNode *cnode,
|
||||
else if (g_ascii_strcasecmp ("FALSE", sub_node->text) != 0)
|
||||
g_warning ("<%s> element contains invalid boolean value %s",
|
||||
sub_node->name, sub_node->text);
|
||||
+ cnode->mask |= ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK;
|
||||
continue;
|
||||
}
|
||||
g_warning ("<engine> element contains invalid element <%s>",
|
||||
@@ -316,7 +335,7 @@ ibus_m17n_get_component (void)
|
||||
if (node && g_strcmp0 (node->name, "engines") == 0) {
|
||||
for (p = node->sub_nodes; p != NULL; p = p->next) {
|
||||
XMLNode *sub_node = p->data;
|
||||
- IBusM17NEngineConfigNode *cnode;
|
||||
+ EngineConfigNode *cnode;
|
||||
|
||||
if (g_strcmp0 (sub_node->name, "engine") != 0) {
|
||||
g_warning ("<engines> element contains invalid element <%s>",
|
||||
@@ -324,9 +343,9 @@ ibus_m17n_get_component (void)
|
||||
continue;
|
||||
}
|
||||
|
||||
- cnode = g_slice_new0 (IBusM17NEngineConfigNode);
|
||||
+ cnode = g_slice_new0 (EngineConfigNode);
|
||||
if (!ibus_m17n_engine_config_parse_xml_node (cnode, sub_node)) {
|
||||
- g_slice_free (IBusM17NEngineConfigNode, cnode);
|
||||
+ g_slice_free (EngineConfigNode, cnode);
|
||||
continue;
|
||||
}
|
||||
config_list = g_slist_prepend (config_list, cnode);
|
||||
@@ -444,30 +463,3 @@ ibus_m17n_config_get_int (IBusConfig *config,
|
||||
return FALSE;
|
||||
#endif /* !IBUS_CHECK_VERSION(1,3,99) */
|
||||
}
|
||||
-
|
||||
-#ifdef DEBUG
|
||||
-#include <locale.h>
|
||||
-
|
||||
-int main ()
|
||||
-{
|
||||
- IBusComponent *component;
|
||||
- GString *output;
|
||||
-
|
||||
- setlocale (LC_ALL, "");
|
||||
- ibus_init ();
|
||||
- ibus_m17n_init_common ();
|
||||
-
|
||||
- component = ibus_m17n_get_component ();
|
||||
-
|
||||
- output = g_string_new ("");
|
||||
-
|
||||
- ibus_component_output (component, output, 1);
|
||||
-
|
||||
- g_debug ("\n%s", output->str);
|
||||
-
|
||||
- g_string_free (output, TRUE);
|
||||
- g_object_unref (component);
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-#endif
|
||||
diff --git a/src/m17nutil.h b/src/m17nutil.h
|
||||
index f083194..313e7bc 100644
|
||||
--- a/src/m17nutil.h
|
||||
+++ b/src/m17nutil.h
|
||||
@@ -30,6 +30,7 @@ gunichar *ibus_m17n_mtext_to_ucs4 (MText *text,
|
||||
guint ibus_m17n_parse_color (const gchar *hex);
|
||||
IBusM17NEngineConfig
|
||||
*ibus_m17n_get_engine_config (const gchar *engine_name);
|
||||
+void ibus_m17n_engine_config_free (IBusM17NEngineConfig *config);
|
||||
void ibus_m17n_config_set_string (IBusConfig *config,
|
||||
const gchar *section,
|
||||
const gchar *name,
|
||||
diff --git a/src/test.c b/src/test.c
|
||||
new file mode 100644
|
||||
index 0000000..0908818
|
||||
--- /dev/null
|
||||
+++ b/src/test.c
|
||||
@@ -0,0 +1,66 @@
|
||||
+/* vim:set et sts=4: */
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
+#include <ibus.h>
|
||||
+#include <locale.h>
|
||||
+#include "m17nutil.h"
|
||||
+
|
||||
+static void
|
||||
+test_output_component (void)
|
||||
+{
|
||||
+ IBusComponent *component;
|
||||
+ GString *output;
|
||||
+
|
||||
+ component = ibus_m17n_get_component ();
|
||||
+
|
||||
+ output = g_string_new ("");
|
||||
+
|
||||
+ ibus_component_output (component, output, 1);
|
||||
+
|
||||
+ g_debug ("\n%s", output->str);
|
||||
+
|
||||
+ g_string_free (output, TRUE);
|
||||
+ g_object_unref (component);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+test_engine_config (void)
|
||||
+{
|
||||
+ IBusM17NEngineConfig *config;
|
||||
+
|
||||
+ config = ibus_m17n_get_engine_config ("m17n:non:exsistent");
|
||||
+ g_assert_cmpint (config->rank, ==, 0);
|
||||
+ g_assert_cmpint (config->preedit_highlight, ==, 0);
|
||||
+ ibus_m17n_engine_config_free (config);
|
||||
+
|
||||
+ config = ibus_m17n_get_engine_config ("m17n:si:wijesekera");
|
||||
+ g_assert_cmpint (config->rank, ==, 2);
|
||||
+ g_assert_cmpint (config->preedit_highlight, ==, 0);
|
||||
+ ibus_m17n_engine_config_free (config);
|
||||
+
|
||||
+ config = ibus_m17n_get_engine_config ("m17n:si:phonetic-dynamic");
|
||||
+ g_assert_cmpint (config->rank, ==, 1);
|
||||
+ g_assert_cmpint (config->preedit_highlight, ==, 0);
|
||||
+ ibus_m17n_engine_config_free (config);
|
||||
+
|
||||
+ config = ibus_m17n_get_engine_config ("m17n:si:samanala");
|
||||
+ g_assert_cmpint (config->rank, ==, 0);
|
||||
+ g_assert_cmpint (config->preedit_highlight, ==, 0);
|
||||
+ ibus_m17n_engine_config_free (config);
|
||||
+}
|
||||
+
|
||||
+int main (int argc, char **argv)
|
||||
+{
|
||||
+ setlocale (LC_ALL, "");
|
||||
+ ibus_init ();
|
||||
+ ibus_m17n_init_common ();
|
||||
+
|
||||
+ g_test_init (&argc, &argv, NULL);
|
||||
+
|
||||
+ g_test_add_func ("/test-m17n/output-component", test_output_component);
|
||||
+ g_test_add_func ("/test-m17n/engine-config", test_engine_config);
|
||||
+
|
||||
+ return g_test_run ();
|
||||
+}
|
||||
--
|
||||
1.7.6.1
|
||||
|
@ -1,100 +0,0 @@
|
||||
Patch to support iok (Indic Onscreen Keyboard).
|
||||
Index: ibus-m17n-1.3.2/src/engine.c
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/engine.c
|
||||
+++ ibus-m17n-1.3.2/src/engine.c
|
||||
@@ -23,6 +23,7 @@ struct _IBusM17NEngine {
|
||||
IBusProperty *setup_prop;
|
||||
#endif /* HAVE_SETUP */
|
||||
IBusPropList *prop_list;
|
||||
+ IBusProperty *show_iok_prop;
|
||||
};
|
||||
|
||||
struct _IBusM17NEngineClass {
|
||||
@@ -34,6 +35,7 @@ struct _IBusM17NEngineClass {
|
||||
guint preedit_background;
|
||||
gint preedit_underline;
|
||||
gint lookup_table_orientation;
|
||||
+ gboolean use_iok;
|
||||
|
||||
MInputMethod *im;
|
||||
};
|
||||
@@ -248,6 +250,9 @@ ibus_m17n_engine_class_init (IBusM17NEng
|
||||
}
|
||||
engine_name = g_strdup_printf ("m17n:%s:%s", lang, name);
|
||||
klass->config_section = g_strdup_printf ("engine/M17N/%s/%s", lang, name);
|
||||
+ /* whether to use iok - maybe good to move this to default.xml */
|
||||
+ klass->use_iok = g_strcmp0 (name, "inscript") == 0 ||
|
||||
+ g_strcmp0 (name, "inscript2") == 0;
|
||||
g_free (lang);
|
||||
g_free (name);
|
||||
|
||||
@@ -344,6 +349,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m
|
||||
{
|
||||
IBusText* label;
|
||||
IBusText* tooltip;
|
||||
+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n);
|
||||
|
||||
m17n->prop_list = ibus_prop_list_new ();
|
||||
g_object_ref_sink (m17n->prop_list);
|
||||
@@ -376,6 +382,23 @@ ibus_m17n_engine_init (IBusM17NEngine *m
|
||||
ibus_prop_list_append (m17n->prop_list, m17n->setup_prop);
|
||||
#endif /* HAVE_SETUP */
|
||||
|
||||
+ label = ibus_text_new_from_string ("iok");
|
||||
+ m17n->show_iok_prop = ibus_property_new ("iok",
|
||||
+ PROP_TYPE_NORMAL,
|
||||
+ label,
|
||||
+ "/usr/share/pixmaps/iok.xpm",
|
||||
+ label,
|
||||
+ TRUE,
|
||||
+ FALSE,
|
||||
+ 0,
|
||||
+ NULL);
|
||||
+ g_object_ref_sink (m17n->show_iok_prop);
|
||||
+
|
||||
+ if (klass->use_iok)
|
||||
+ ibus_property_set_visible (m17n->show_iok_prop, TRUE);
|
||||
+
|
||||
+ ibus_prop_list_append (m17n->prop_list, m17n->show_iok_prop);
|
||||
+
|
||||
m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE);
|
||||
g_object_ref_sink (m17n->table);
|
||||
m17n->context = NULL;
|
||||
@@ -461,6 +484,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine
|
||||
}
|
||||
#endif /* HAVE_SETUP */
|
||||
|
||||
+ if (m17n->show_iok_prop) {
|
||||
+ g_object_unref (m17n->show_iok_prop);
|
||||
+ m17n->show_iok_prop = NULL;
|
||||
+ }
|
||||
+
|
||||
if (m17n->table) {
|
||||
g_object_unref (m17n->table);
|
||||
m17n->table = NULL;
|
||||
@@ -778,6 +806,24 @@ ibus_m17n_engine_property_activate (IBus
|
||||
}
|
||||
#endif /* HAVE_SETUP */
|
||||
|
||||
+ if (g_strcmp0 (prop_name, "iok") == 0) {
|
||||
+ const gchar *engine_name;
|
||||
+ gchar *lang = NULL, *name = NULL;
|
||||
+
|
||||
+ engine_name = ibus_engine_get_name ((IBusEngine *) m17n);
|
||||
+ if (ibus_m17n_scan_engine_name (engine_name, &lang, &name)) {
|
||||
+ gchar *iok;
|
||||
+
|
||||
+ iok = g_strdup_printf ("/usr/bin/iok -n %s", lang);
|
||||
+ g_debug ("keymap name = %s,prop_name=%s, prop_state=%d",
|
||||
+ engine_name, prop_name, prop_state);
|
||||
+ g_spawn_command_line_async(iok, NULL);
|
||||
+ g_free (iok);
|
||||
+ }
|
||||
+ g_free (lang);
|
||||
+ g_free (name);
|
||||
+ }
|
||||
+
|
||||
parent_class->property_activate (engine, prop_name, prop_state);
|
||||
}
|
||||
|
653
ibus-m17n-virtkbd.patch
Normal file
653
ibus-m17n-virtkbd.patch
Normal file
@ -0,0 +1,653 @@
|
||||
From 03557655071092e8135a6fc5c5f8cc2b2f692a83 Mon Sep 17 00:00:00 2001
|
||||
From: Daiki Ueno <ueno@unixuser.org>
|
||||
Date: Wed, 31 Aug 2011 18:28:48 +0900
|
||||
Subject: [PATCH 5/5] Support virtual keyboard.
|
||||
|
||||
---
|
||||
configure.ac | 17 ++++
|
||||
src/Makefile.am | 7 ++
|
||||
src/default.xml.in.in | 111 ++++++++++++++++++++++++
|
||||
src/engine.c | 44 ++++++++++
|
||||
src/m17nutil.c | 10 ++-
|
||||
src/m17nutil.h | 3 +
|
||||
src/virtkbd.c | 226 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
src/virtkbd.h | 31 +++++++
|
||||
8 files changed, 448 insertions(+), 1 deletions(-)
|
||||
create mode 100644 src/virtkbd.c
|
||||
create mode 100644 src/virtkbd.h
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 089aafb..ea1476c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -88,6 +88,23 @@ fi
|
||||
|
||||
AM_CONDITIONAL([HAVE_GTK],[test x$with_gtk != xno])
|
||||
|
||||
+dnl check eekboard for virtual keyboard
|
||||
+AC_MSG_CHECKING([whether you enable eekboard])
|
||||
+AC_ARG_ENABLE(eekboard,
|
||||
+ AS_HELP_STRING([--enable-eekboard=no/yes],
|
||||
+ [Enable eekboard default=yes]),
|
||||
+ enable_eekboard=$enableval,
|
||||
+ enable_eekboard=yes)
|
||||
+
|
||||
+if test x$enable_eekboard = xyes; then
|
||||
+ PKG_CHECK_MODULES([EEKBOARD], [eekboard-0.90], , enable_xtest=no)
|
||||
+ if test x$enable_eekboard = xyes; then
|
||||
+ AC_DEFINE([HAVE_EEKBOARD], [1], [Define if eekboard is found])
|
||||
+ fi
|
||||
+fi
|
||||
+AM_CONDITIONAL(ENABLE_EEKBOARD, [test x$enable_eekboard = xyes])
|
||||
+AC_MSG_RESULT($enable_eekboard)
|
||||
+
|
||||
# check if minput_list, which is available in m17n-lib 1.6.2+ (CVS)
|
||||
save_CFLAGS="$CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index e354149..eac6629 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -64,11 +64,18 @@ ibus_engine_m17n_SOURCES = \
|
||||
main.c \
|
||||
engine.c \
|
||||
engine.h \
|
||||
+ virtkbd.c \
|
||||
+ virtkbd.h \
|
||||
+ $(NULL)
|
||||
+ibus_engine_m17n_CFLAGS = \
|
||||
+ @EEKBOARD_CFLAGS@ \
|
||||
+ $(AM_CFLAGS) \
|
||||
$(NULL)
|
||||
ibus_engine_m17n_LDADD = \
|
||||
libm17ncommon.a \
|
||||
@IBUS_LIBS@ \
|
||||
@M17N_LIBS@ \
|
||||
+ @EEKBOARD_LIBS@ \
|
||||
$(NULL)
|
||||
|
||||
if HAVE_GTK
|
||||
diff --git a/src/default.xml.in.in b/src/default.xml.in.in
|
||||
index 8192878..47053ae 100644
|
||||
--- a/src/default.xml.in.in
|
||||
+++ b/src/default.xml.in.in
|
||||
@@ -12,6 +12,7 @@
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<symbol></symbol>
|
||||
@IBUS_HOTKEYS_XML@
|
||||
+ <virtual-keyboard>us</virtual-keyboard>
|
||||
</engine>
|
||||
<!-- Indic engines should be selected by default:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=640896 -->
|
||||
@@ -410,4 +411,114 @@
|
||||
<name>m17n:zh:tonepy*</name>
|
||||
<symbol>调</symbol>
|
||||
</engine>
|
||||
+
|
||||
+ <!-- Virtual keyboard. -->
|
||||
+ <engine>
|
||||
+ <name>m17n:ar:kbd</name>
|
||||
+ <virtual-keyboard>ar,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:be:kbd</name>
|
||||
+ <virtual-keyboard>be,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:fa:kbd</name>
|
||||
+ <virtual-keyboard>fa,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:he:kbd</name>
|
||||
+ <virtual-keyboard>he,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:kk:kbd</name>
|
||||
+ <virtual-keyboard>kk,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ks:kbd</name>
|
||||
+ <virtual-keyboard>ks,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:my:kbd</name>
|
||||
+ <virtual-keyboard>my,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ru:kbd</name>
|
||||
+ <virtual-keyboard>ru,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ua:kbd</name>
|
||||
+ <virtual-keyboard>ua,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ug:kbd</name>
|
||||
+ <virtual-keyboard>ug,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:be:kbd</name>
|
||||
+ <virtual-keyboard>be,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:th:*</name>
|
||||
+ <virtual-keyboard>th,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:bopomofo</name>
|
||||
+ <virtual-keyboard>zh-bopomofo,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:as:inscript</name>
|
||||
+ <virtual-keyboard>as-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:bn:inscript</name>
|
||||
+ <virtual-keyboard>bn-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:gu:inscript</name>
|
||||
+ <virtual-keyboard>gu-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:hi:inscript</name>
|
||||
+ <virtual-keyboard>hi-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:kn:inscript</name>
|
||||
+ <virtual-keyboard>kn-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ks:inscript</name>
|
||||
+ <virtual-keyboard>kn-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:mai:inscript</name>
|
||||
+ <virtual-keyboard>mai-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ml:inscript</name>
|
||||
+ <virtual-keyboard>ml-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:mr:inscript</name>
|
||||
+ <virtual-keyboard>mr-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:or:inscript</name>
|
||||
+ <virtual-keyboard>or-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:pa:inscript</name>
|
||||
+ <virtual-keyboard>pa-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sd:inscript</name>
|
||||
+ <virtual-keyboard>sd-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ta:inscript</name>
|
||||
+ <virtual-keyboard>ta-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:te:inscript</name>
|
||||
+ <virtual-keyboard>te-inscript,us</virtual-keyboard>
|
||||
+ </engine>
|
||||
</engines>
|
||||
diff --git a/src/engine.c b/src/engine.c
|
||||
index f1e3068..cad01e5 100644
|
||||
--- a/src/engine.c
|
||||
+++ b/src/engine.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <m17n.h>
|
||||
#include <string.h>
|
||||
#include "m17nutil.h"
|
||||
+#include "virtkbd.h"
|
||||
#include "engine.h"
|
||||
|
||||
typedef struct _IBusM17NEngine IBusM17NEngine;
|
||||
@@ -18,10 +19,13 @@ struct _IBusM17NEngine {
|
||||
/* members */
|
||||
MInputContext *context;
|
||||
IBusLookupTable *table;
|
||||
+ IBusM17NVirtualKeyboard *virtkbd;
|
||||
+
|
||||
IBusProperty *status_prop;
|
||||
#ifdef HAVE_SETUP
|
||||
IBusProperty *setup_prop;
|
||||
#endif /* HAVE_SETUP */
|
||||
+ IBusProperty *virtkbd_prop;
|
||||
IBusPropList *prop_list;
|
||||
};
|
||||
|
||||
@@ -34,6 +38,7 @@ struct _IBusM17NEngineClass {
|
||||
guint preedit_background;
|
||||
gint preedit_underline;
|
||||
gint lookup_table_orientation;
|
||||
+ gchar *virtual_keyboard;
|
||||
|
||||
MInputMethod *im;
|
||||
};
|
||||
@@ -110,6 +115,10 @@ ibus_m17n_init (IBusBus *bus)
|
||||
if (config)
|
||||
g_object_ref_sink (config);
|
||||
ibus_m17n_init_common ();
|
||||
+
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ eek_init ();
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -290,6 +299,8 @@ ibus_m17n_engine_class_init (IBusM17NEngineClass *klass)
|
||||
&klass->lookup_table_orientation))
|
||||
klass->lookup_table_orientation = IBUS_ORIENTATION_SYSTEM;
|
||||
|
||||
+ klass->virtual_keyboard = engine_config->virtual_keyboard;
|
||||
+
|
||||
ibus_m17n_engine_config_free (engine_config);
|
||||
|
||||
g_signal_connect (config, "value-changed",
|
||||
@@ -346,6 +357,7 @@ ibus_m17n_engine_init (IBusM17NEngine *m17n)
|
||||
{
|
||||
IBusText* label;
|
||||
IBusText* tooltip;
|
||||
+ IBusM17NEngineClass *klass = (IBusM17NEngineClass *) G_OBJECT_GET_CLASS (m17n);
|
||||
|
||||
m17n->prop_list = ibus_prop_list_new ();
|
||||
g_object_ref_sink (m17n->prop_list);
|
||||
@@ -378,6 +390,22 @@ ibus_m17n_engine_init (IBusM17NEngine *m17n)
|
||||
ibus_prop_list_append (m17n->prop_list, m17n->setup_prop);
|
||||
#endif /* HAVE_SETUP */
|
||||
|
||||
+ if (klass->virtual_keyboard != NULL) {
|
||||
+ label = ibus_text_new_from_string ("On-screen Keyboard");
|
||||
+ tooltip = ibus_text_new_from_string ("Show on-screen keyboard");
|
||||
+ m17n->virtkbd_prop = ibus_property_new ("virtual-keyboard",
|
||||
+ PROP_TYPE_NORMAL,
|
||||
+ label,
|
||||
+ "input-keyboard",
|
||||
+ tooltip,
|
||||
+ TRUE,
|
||||
+ TRUE,
|
||||
+ PROP_STATE_UNCHECKED,
|
||||
+ NULL);
|
||||
+ g_object_ref_sink (m17n->virtkbd_prop);
|
||||
+ ibus_prop_list_append (m17n->prop_list, m17n->virtkbd_prop);
|
||||
+ }
|
||||
+
|
||||
m17n->table = ibus_lookup_table_new (9, 0, TRUE, TRUE);
|
||||
g_object_ref_sink (m17n->table);
|
||||
m17n->context = NULL;
|
||||
@@ -439,6 +467,8 @@ ibus_m17n_engine_constructor (GType type,
|
||||
}
|
||||
|
||||
m17n->context = minput_create_ic (klass->im, m17n);
|
||||
+ m17n->virtkbd = ibus_m17n_virtual_keyboard_new ((IBusEngine *)m17n,
|
||||
+ klass->virtual_keyboard);
|
||||
|
||||
return (GObject *) m17n;
|
||||
}
|
||||
@@ -473,6 +503,11 @@ ibus_m17n_engine_destroy (IBusM17NEngine *m17n)
|
||||
m17n->context = NULL;
|
||||
}
|
||||
|
||||
+ if (m17n->virtkbd) {
|
||||
+ g_object_unref (m17n->virtkbd);
|
||||
+ m17n->virtkbd = NULL;
|
||||
+ }
|
||||
+
|
||||
IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)m17n);
|
||||
}
|
||||
|
||||
@@ -709,6 +744,8 @@ ibus_m17n_engine_enable (IBusEngine *engine)
|
||||
ibus_engine_get_surrounding_text (engine, &text, &cursor_pos);
|
||||
g_object_unref (text);
|
||||
#endif /* HAVE_IBUS_ENGINE_GET_SURROUNDING_TEXT */
|
||||
+
|
||||
+ ibus_m17n_virtual_keyboard_enable (m17n->virtkbd);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -718,6 +755,8 @@ ibus_m17n_engine_disable (IBusEngine *engine)
|
||||
|
||||
ibus_m17n_engine_focus_out (engine);
|
||||
parent_class->disable (engine);
|
||||
+
|
||||
+ ibus_m17n_virtual_keyboard_disable (m17n->virtkbd);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -780,6 +819,11 @@ ibus_m17n_engine_property_activate (IBusEngine *engine,
|
||||
}
|
||||
#endif /* HAVE_SETUP */
|
||||
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ if (g_strcmp0 (prop_name, "virtual-keyboard") == 0)
|
||||
+ ibus_m17n_virtual_keyboard_toggle_display (m17n->virtkbd);
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+
|
||||
parent_class->property_activate (engine, prop_name, prop_state);
|
||||
}
|
||||
|
||||
diff --git a/src/m17nutil.c b/src/m17nutil.c
|
||||
index 3e6b9f1..bf8bf84 100644
|
||||
--- a/src/m17nutil.c
|
||||
+++ b/src/m17nutil.c
|
||||
@@ -14,7 +14,8 @@ typedef enum {
|
||||
ENGINE_CONFIG_LAYOUT_MASK = 1 << 1,
|
||||
ENGINE_CONFIG_HOTKEYS_MASK = 1 << 2,
|
||||
ENGINE_CONFIG_SYMBOL_MASK = 1 << 3,
|
||||
- ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 4
|
||||
+ ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 4,
|
||||
+ ENGINE_CONFIG_VIRTUAL_KEYBOARD_MASK = 1 << 5
|
||||
} EngineConfigMask;
|
||||
|
||||
struct _EngineConfigNode {
|
||||
@@ -281,6 +282,8 @@ ibus_m17n_get_engine_config (const gchar *engine_name)
|
||||
config->symbol = cnode->config.symbol;
|
||||
if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK)
|
||||
config->preedit_highlight = cnode->config.preedit_highlight;
|
||||
+ if (cnode->mask & ENGINE_CONFIG_VIRTUAL_KEYBOARD_MASK)
|
||||
+ config->virtual_keyboard = cnode->config.virtual_keyboard;
|
||||
}
|
||||
}
|
||||
return config;
|
||||
@@ -336,6 +339,11 @@ ibus_m17n_engine_config_parse_xml_node (EngineConfigNode *cnode,
|
||||
cnode->mask |= ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK;
|
||||
continue;
|
||||
}
|
||||
+ if (g_strcmp0 (sub_node->name , "virtual-keyboard") == 0) {
|
||||
+ cnode->config.virtual_keyboard = g_strdup (sub_node->text);
|
||||
+ cnode->mask |= ENGINE_CONFIG_VIRTUAL_KEYBOARD_MASK;
|
||||
+ continue;
|
||||
+ }
|
||||
g_warning ("<engine> element contains invalid element <%s>",
|
||||
sub_node->name);
|
||||
}
|
||||
diff --git a/src/m17nutil.h b/src/m17nutil.h
|
||||
index 21b1bb9..f138c8b 100644
|
||||
--- a/src/m17nutil.h
|
||||
+++ b/src/m17nutil.h
|
||||
@@ -25,6 +25,9 @@ struct _IBusM17NEngineConfig {
|
||||
|
||||
/* whether to highlight preedit */
|
||||
gboolean preedit_highlight;
|
||||
+
|
||||
+ /* virtual keyboard type */
|
||||
+ gchar *virtual_keyboard;
|
||||
};
|
||||
|
||||
typedef struct _IBusM17NEngineConfig IBusM17NEngineConfig;
|
||||
diff --git a/src/virtkbd.c b/src/virtkbd.c
|
||||
new file mode 100644
|
||||
index 0000000..92ae3a5
|
||||
--- /dev/null
|
||||
+++ b/src/virtkbd.c
|
||||
@@ -0,0 +1,226 @@
|
||||
+/* vim:set et sts=4: */
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+#include <config.h>
|
||||
+#endif
|
||||
+
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+#include <eekboard/eekboard-client.h>
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+
|
||||
+#include "virtkbd.h"
|
||||
+
|
||||
+struct _IBusM17NVirtualKeyboard {
|
||||
+ GObject parent;
|
||||
+ IBusEngine *engine;
|
||||
+ gchar *keyboard_type;
|
||||
+ GSList *keyboards;
|
||||
+
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ EekboardClient *client;
|
||||
+ EekboardContext *context;
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+};
|
||||
+
|
||||
+struct _IBusM17NVirtualKeyboardClass {
|
||||
+ GObjectClass parent_class;
|
||||
+};
|
||||
+
|
||||
+typedef struct _IBusM17NVirtualKeyboardClass IBusM17NVirtualKeyboardClass;
|
||||
+
|
||||
+G_DEFINE_TYPE (IBusM17NVirtualKeyboard, ibus_m17n_virtual_keyboard, G_TYPE_OBJECT);
|
||||
+
|
||||
+static void
|
||||
+ibus_m17n_virtual_keyboard_dispose (GObject *object)
|
||||
+{
|
||||
+ IBusM17NVirtualKeyboard *virtkbd = IBUS_M17N_VIRTUAL_KEYBOARD (object);
|
||||
+
|
||||
+ if (virtkbd->engine) {
|
||||
+ g_object_unref (virtkbd->engine);
|
||||
+ virtkbd->engine = NULL;
|
||||
+ }
|
||||
+ if (virtkbd->keyboards) {
|
||||
+ GSList *next = virtkbd->keyboards->next;
|
||||
+ /* virtkbd->keyboards is a ring; break it before free */
|
||||
+ virtkbd->keyboards->next = NULL;
|
||||
+ g_slist_free (next);
|
||||
+ }
|
||||
+
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ if (virtkbd->context) {
|
||||
+ g_object_unref (virtkbd->context);
|
||||
+ virtkbd->context = NULL;
|
||||
+ }
|
||||
+ if (virtkbd->client) {
|
||||
+ g_object_unref (virtkbd->client);
|
||||
+ virtkbd->client = NULL;
|
||||
+ }
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+
|
||||
+ G_OBJECT_CLASS (ibus_m17n_virtual_keyboard_parent_class)->dispose (object);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ibus_m17n_virtual_keyboard_finalize (GObject *object)
|
||||
+{
|
||||
+ IBusM17NVirtualKeyboard *virtkbd = IBUS_M17N_VIRTUAL_KEYBOARD (object);
|
||||
+
|
||||
+ g_free (virtkbd->keyboard_type);
|
||||
+
|
||||
+ G_OBJECT_CLASS (ibus_m17n_virtual_keyboard_parent_class)->finalize (object);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ibus_m17n_virtual_keyboard_class_init (IBusM17NVirtualKeyboardClass *klass)
|
||||
+{
|
||||
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
+ gobject_class->dispose = ibus_m17n_virtual_keyboard_dispose;
|
||||
+ gobject_class->finalize = ibus_m17n_virtual_keyboard_finalize;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ibus_m17n_virtual_keyboard_init (IBusM17NVirtualKeyboard *self)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+static void
|
||||
+destroyed_cb (EekboardClient *client,
|
||||
+ IBusM17NVirtualKeyboard *virtkbd)
|
||||
+{
|
||||
+ if (virtkbd->context) {
|
||||
+ g_object_unref (virtkbd->context);
|
||||
+ virtkbd->context = NULL;
|
||||
+ }
|
||||
+ if (virtkbd->client) {
|
||||
+ g_object_unref (virtkbd->client);
|
||||
+ virtkbd->client = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+key_pressed_cb (EekboardContext *context,
|
||||
+ gchar *keyname,
|
||||
+ EekSymbol *symbol,
|
||||
+ guint modifiers,
|
||||
+ IBusM17NVirtualKeyboard *virtkbd)
|
||||
+{
|
||||
+ if (EEK_IS_TEXT (symbol)) {
|
||||
+ const gchar *string;
|
||||
+ IBusText *text;
|
||||
+
|
||||
+ string = eek_text_get_text (EEK_TEXT (symbol));
|
||||
+ text = ibus_text_new_from_static_string (string);
|
||||
+ ibus_engine_commit_text (virtkbd->engine, text);
|
||||
+ } else if (EEK_IS_KEYSYM (symbol)) {
|
||||
+ guint keyval = eek_keysym_get_xkeysym (EEK_KEYSYM (symbol));
|
||||
+ ibus_engine_forward_key_event (virtkbd->engine,
|
||||
+ keyval,
|
||||
+ 0,
|
||||
+ modifiers);
|
||||
+ ibus_engine_forward_key_event (virtkbd->engine,
|
||||
+ keyval,
|
||||
+ 0,
|
||||
+ modifiers | IBUS_RELEASE_MASK);
|
||||
+ } else if (g_strcmp0 (eek_symbol_get_name (symbol),
|
||||
+ "cycle-keyboard") == 0) {
|
||||
+ virtkbd->keyboards = g_slist_next (virtkbd->keyboards);
|
||||
+ eekboard_context_set_keyboard (virtkbd->context,
|
||||
+ GPOINTER_TO_UINT (virtkbd->keyboards->data),
|
||||
+ NULL);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+init_client (IBusM17NVirtualKeyboard *virtkbd)
|
||||
+{
|
||||
+ GDBusConnection *connection;
|
||||
+ GError *error;
|
||||
+ gchar **strv, **p;
|
||||
+
|
||||
+ error = NULL;
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_printerr ("Can't connect to the session bus: %s\n",
|
||||
+ error->message);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ virtkbd->client = eekboard_client_new (connection, NULL);
|
||||
+ g_object_unref (connection);
|
||||
+ g_signal_connect (virtkbd->client, "destroyed",
|
||||
+ G_CALLBACK (destroyed_cb), virtkbd);
|
||||
+
|
||||
+ virtkbd->context = eekboard_client_create_context (virtkbd->client,
|
||||
+ "ibus-m17n",
|
||||
+ NULL);
|
||||
+ g_signal_connect (virtkbd->context, "key-pressed",
|
||||
+ G_CALLBACK (key_pressed_cb), virtkbd);
|
||||
+
|
||||
+ strv = g_strsplit (virtkbd->keyboard_type, ",", -1);
|
||||
+ for (p = strv; *p; p++) {
|
||||
+ guint keyboard;
|
||||
+
|
||||
+ keyboard = eekboard_context_add_keyboard (virtkbd->context,
|
||||
+ g_strstrip (*p),
|
||||
+ NULL);
|
||||
+ virtkbd->keyboards = g_slist_prepend (virtkbd->keyboards,
|
||||
+ GUINT_TO_POINTER (keyboard));
|
||||
+ }
|
||||
+ virtkbd->keyboards = g_slist_reverse (virtkbd->keyboards);
|
||||
+ g_strfreev (strv);
|
||||
+
|
||||
+ /* make a cycle */
|
||||
+ g_slist_last (virtkbd->keyboards)->next = virtkbd->keyboards;
|
||||
+
|
||||
+ eekboard_context_set_keyboard (virtkbd->context,
|
||||
+ GPOINTER_TO_UINT (virtkbd->keyboards->data),
|
||||
+ NULL);
|
||||
+}
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+
|
||||
+void
|
||||
+ibus_m17n_virtual_keyboard_toggle_display (IBusM17NVirtualKeyboard *virtkbd)
|
||||
+{
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ if (virtkbd->client == NULL)
|
||||
+ ibus_m17n_virtual_keyboard_enable (virtkbd);
|
||||
+
|
||||
+ if (virtkbd->client != NULL) {
|
||||
+ if (eekboard_context_is_visible (virtkbd->context))
|
||||
+ eekboard_context_hide_keyboard (virtkbd->context, NULL);
|
||||
+ else
|
||||
+ eekboard_context_show_keyboard (virtkbd->context, NULL);
|
||||
+ }
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+ibus_m17n_virtual_keyboard_enable (IBusM17NVirtualKeyboard *virtkbd)
|
||||
+{
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ if (virtkbd->client == NULL)
|
||||
+ init_client (virtkbd);
|
||||
+
|
||||
+ if (virtkbd->client != NULL)
|
||||
+ eekboard_client_push_context (virtkbd->client, virtkbd->context, NULL);
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+ibus_m17n_virtual_keyboard_disable (IBusM17NVirtualKeyboard *virtkbd)
|
||||
+{
|
||||
+#ifdef HAVE_EEKBOARD
|
||||
+ if (virtkbd->client != NULL)
|
||||
+ eekboard_client_pop_context (virtkbd->client, NULL);
|
||||
+#endif /* HAVE_EEKBOARD */
|
||||
+}
|
||||
+
|
||||
+IBusM17NVirtualKeyboard *
|
||||
+ibus_m17n_virtual_keyboard_new (IBusEngine *engine,
|
||||
+ const gchar *keyboard_type)
|
||||
+{
|
||||
+ IBusM17NVirtualKeyboard *virtkbd = g_object_new (IBUS_M17N_TYPE_VIRTUAL_KEYBOARD, NULL);
|
||||
+ virtkbd->engine = g_object_ref (engine);
|
||||
+ virtkbd->keyboard_type = g_strdup (keyboard_type);
|
||||
+ return virtkbd;
|
||||
+}
|
||||
diff --git a/src/virtkbd.h b/src/virtkbd.h
|
||||
new file mode 100644
|
||||
index 0000000..c28953a
|
||||
--- /dev/null
|
||||
+++ b/src/virtkbd.h
|
||||
@@ -0,0 +1,31 @@
|
||||
+#ifndef __VIRTKBD_H__
|
||||
+#define __VIRTKBD_H__ 1
|
||||
+
|
||||
+#include <ibus.h>
|
||||
+
|
||||
+G_BEGIN_DECLS
|
||||
+
|
||||
+#define IBUS_M17N_TYPE_VIRTUAL_KEYBOARD (ibus_m17n_virtual_keyboard_get_type())
|
||||
+#define IBUS_M17N_VIRTUAL_KEYBOARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_M17N_TYPE_VIRTUAL_KEYBOARD, IBusM17NVirtualKeyboard))
|
||||
+#define IBUS_M17N_VIRTUAL_KEYBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_M17N_TYPE_VIRTUAL_KEYBOARD, IBusM17NVirtualKeyboardClass))
|
||||
+#define IBUS_M17N_IS_VIRTUAL_KEYBOARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_M17N_TYPE_VIRTUAL_KEYBOARD))
|
||||
+#define IBUS_M17N_IS_VIRTUAL_KEYBOARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_M17N_TYPE_VIRTUAL_KEYBOARD))
|
||||
+#define IBUS_M17N_VIRTUAL_KEYBOARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_M17N_TYPE_VIRTUAL_KEYBOARD, IBusM17NVirtualKeyboardClass))
|
||||
+
|
||||
+typedef struct _IBusM17NVirtualKeyboard IBusM17NVirtualKeyboard;
|
||||
+
|
||||
+GType ibus_m17n_virtual_keyboard_get_type
|
||||
+ (void);
|
||||
+IBusM17NVirtualKeyboard *ibus_m17n_virtual_keyboard_new
|
||||
+ (IBusEngine *engine,
|
||||
+ const gchar *keyboard_type);
|
||||
+void ibus_m17n_virtual_keyboard_toggle_display
|
||||
+ (IBusM17NVirtualKeyboard *virtkbd);
|
||||
+void ibus_m17n_virtual_keyboard_enable
|
||||
+ (IBusM17NVirtualKeyboard *virtkbd);
|
||||
+void ibus_m17n_virtual_keyboard_disable
|
||||
+ (IBusM17NVirtualKeyboard *virtkbd);
|
||||
+
|
||||
+G_END_DECLS
|
||||
+
|
||||
+#endif /* __VIRTKBD_H__ */
|
||||
--
|
||||
1.7.6.1
|
||||
|
@ -1,122 +1,49 @@
|
||||
Patch to set certain XKB options when an m17n IME is set.
|
||||
Index: ibus-m17n-1.3.2/src/default.xml.in.in
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/default.xml.in.in
|
||||
+++ ibus-m17n-1.3.2/src/default.xml.in.in
|
||||
@@ -12,19 +12,22 @@
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
From 98be0a7b90cd47cafabb715695d20b9bfc7dd1bb Mon Sep 17 00:00:00 2001
|
||||
From: Daiki Ueno <ueno@unixuser.org>
|
||||
Date: Mon, 8 Aug 2011 09:59:28 +0900
|
||||
Subject: [PATCH 3/5] Set XKB layout option via default.xml.
|
||||
|
||||
---
|
||||
src/default.xml.in.in | 9 +++++++++
|
||||
src/m17nutil.c | 13 +++++++++++--
|
||||
src/m17nutil.h | 3 +++
|
||||
3 files changed, 23 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/default.xml.in.in b/src/default.xml.in.in
|
||||
index dc93fd3..785ab05 100644
|
||||
--- a/src/default.xml.in.in
|
||||
+++ b/src/default.xml.in.in
|
||||
@@ -157,6 +157,15 @@
|
||||
<name>m17n:si:samanala</name>
|
||||
<rank>0</rank>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:bn:inscript</name>
|
||||
+ <name>m17n:bn:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <!-- Some Indic engines expect AltGr is automatically mapped -->
|
||||
+ <engine>
|
||||
+ <name>m17n:*:inscript</name>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:gu:inscript</name>
|
||||
+ <name>m17n:gu:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:si:*</name>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
+ </engine>
|
||||
<!-- Some CJK engines use preedit. -->
|
||||
<engine>
|
||||
- <name>m17n:hi:inscript</name>
|
||||
+ <name>m17n:hi:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:kn:kgp</name>
|
||||
@@ -37,19 +40,22 @@
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:mai:inscript</name>
|
||||
+ <name>m17n:mai:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:ml:inscript</name>
|
||||
+ <name>m17n:ml:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:mr:inscript</name>
|
||||
+ <name>m17n:mr:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ne:rom</name>
|
||||
@@ -57,14 +63,16 @@
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:or:inscript</name>
|
||||
+ <name>m17n:or:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:pa:inscript</name>
|
||||
+ <name>m17n:pa:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sa:harvard-kyoto</name>
|
||||
@@ -72,14 +80,16 @@
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:sd:inscript</name>
|
||||
+ <name>m17n:sd:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:si:wijesekera</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ta:tamil99</name>
|
||||
@@ -87,9 +97,10 @@
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
</engine>
|
||||
<engine>
|
||||
- <name>m17n:te:inscript</name>
|
||||
+ <name>m17n:te:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<!-- Samanala should have lower rank than other Sinhala
|
||||
engines since it is the only non-keyboard input method in
|
||||
@@ -226,6 +237,7 @@
|
||||
<name>m17n:si:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <layout>default[lv3:ralt_switch]</layout>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ta:*</name>
|
||||
Index: ibus-m17n-1.3.2/src/m17nutil.c
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/m17nutil.c
|
||||
+++ ibus-m17n-1.3.2/src/m17nutil.c
|
||||
@@ -120,7 +120,7 @@ ibus_m17n_engine_new (MSymbol lang,
|
||||
<name>m17n:zh:cangjie</name>
|
||||
diff --git a/src/m17nutil.c b/src/m17nutil.c
|
||||
index 00b7194..06e1b58 100644
|
||||
--- a/src/m17nutil.c
|
||||
+++ b/src/m17nutil.c
|
||||
@@ -11,7 +11,8 @@ static MConverter *utf8_converter = NULL;
|
||||
|
||||
typedef enum {
|
||||
ENGINE_CONFIG_RANK_MASK = 1 << 0,
|
||||
- ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 1
|
||||
+ ENGINE_CONFIG_LAYOUT_MASK = 1 << 1,
|
||||
+ ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 2
|
||||
} EngineConfigMask;
|
||||
|
||||
struct _EngineConfigNode {
|
||||
@@ -126,7 +127,7 @@ ibus_m17n_engine_new (MSymbol lang,
|
||||
"language", msymbol_name (lang),
|
||||
"license", "GPL",
|
||||
"icon", engine_icon ? engine_icon : "",
|
||||
@ -125,22 +52,32 @@ Index: ibus-m17n-1.3.2/src/m17nutil.c
|
||||
"rank", config->rank,
|
||||
NULL);
|
||||
#else
|
||||
@@ -282,6 +282,11 @@ ibus_m17n_engine_config_parse_xml_node (
|
||||
cnode->config.rank = atoi (sub_node->text);
|
||||
@@ -268,6 +269,8 @@ ibus_m17n_get_engine_config (const gchar *engine_name)
|
||||
if (g_pattern_match_simple (cnode->name, engine_name)) {
|
||||
if (cnode->mask & ENGINE_CONFIG_RANK_MASK)
|
||||
config->rank = cnode->config.rank;
|
||||
+ if (cnode->mask & ENGINE_CONFIG_LAYOUT_MASK)
|
||||
+ config->layout = cnode->config.layout;
|
||||
if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK)
|
||||
config->preedit_highlight = cnode->config.preedit_highlight;
|
||||
}
|
||||
@@ -300,6 +303,12 @@ ibus_m17n_engine_config_parse_xml_node (EngineConfigNode *cnode,
|
||||
cnode->mask |= ENGINE_CONFIG_RANK_MASK;
|
||||
continue;
|
||||
}
|
||||
+ if (g_strcmp0 (sub_node->name , "layout") == 0) {
|
||||
+ g_free (cnode->config.layout);
|
||||
+ cnode->config.layout = g_strdup (sub_node->text);
|
||||
+ cnode->mask |= ENGINE_CONFIG_LAYOUT_MASK;
|
||||
+ continue;
|
||||
+ }
|
||||
if (g_strcmp0 (sub_node->name , "preedit-highlight") == 0) {
|
||||
if (g_ascii_strcasecmp ("TRUE", sub_node->text) == 0)
|
||||
cnode->config.preedit_highlight = TRUE;
|
||||
Index: ibus-m17n-1.3.2/src/m17nutil.h
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/m17nutil.h
|
||||
+++ ibus-m17n-1.3.2/src/m17nutil.h
|
||||
diff --git a/src/m17nutil.h b/src/m17nutil.h
|
||||
index 313e7bc..c7b283e 100644
|
||||
--- a/src/m17nutil.h
|
||||
+++ b/src/m17nutil.h
|
||||
@@ -14,6 +14,9 @@ struct _IBusM17NEngineConfig {
|
||||
/* engine rank */
|
||||
gint rank;
|
||||
@ -151,3 +88,6 @@ Index: ibus-m17n-1.3.2/src/m17nutil.h
|
||||
/* whether to highlight preedit */
|
||||
gboolean preedit_highlight;
|
||||
};
|
||||
--
|
||||
1.7.6.1
|
||||
|
||||
|
@ -1,23 +1,23 @@
|
||||
From 432d6f93be857d2544ad19ba67caea22d5843cc5 Mon Sep 17 00:00:00 2001
|
||||
From 7a3f7a425977c685ad64a4ec44682926ef345ea1 Mon Sep 17 00:00:00 2001
|
||||
From: Daiki Ueno <ueno@unixuser.org>
|
||||
Date: Tue, 5 Jul 2011 16:26:49 +0900
|
||||
Subject: [PATCH] Supply hotkeys and symbol in engine desc.
|
||||
Date: Wed, 31 Aug 2011 11:44:46 +0900
|
||||
Subject: [PATCH 4/5] Supply hotkeys and symbol in engine desc.
|
||||
|
||||
---
|
||||
configure.ac | 3 +
|
||||
m4/.gitignore | 2 +
|
||||
m4/ibus.m4 | 52 +++++++++
|
||||
src/default.xml.in.in | 284 +++++++++++++++++++++++++++++++++++++++++--------
|
||||
src/m17nutil.c | 10 ++
|
||||
src/m17nutil.h | 6 +
|
||||
6 files changed, 312 insertions(+), 45 deletions(-)
|
||||
m4/ibus.m4 | 52 ++++++++++++
|
||||
src/default.xml.in.in | 207 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
src/m17nutil.c | 20 +++++-
|
||||
src/m17nutil.h | 6 ++
|
||||
6 files changed, 289 insertions(+), 1 deletions(-)
|
||||
create mode 100644 m4/ibus.m4
|
||||
|
||||
Index: ibus-m17n-1.3.2/configure.ac
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/configure.ac
|
||||
+++ ibus-m17n-1.3.2/configure.ac
|
||||
@@ -114,6 +114,9 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GET
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 4df68b6..089aafb 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -114,6 +114,9 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Define to the read-only
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION(0.16.1)
|
||||
|
||||
@ -27,10 +27,19 @@ Index: ibus-m17n-1.3.2/configure.ac
|
||||
|
||||
# OUTPUT files
|
||||
AC_CONFIG_FILES([ po/Makefile.in
|
||||
Index: ibus-m17n-1.3.2/m4/ibus.m4
|
||||
===================================================================
|
||||
diff --git a/m4/.gitignore b/m4/.gitignore
|
||||
index 0f4126c..e28d185 100644
|
||||
--- a/m4/.gitignore
|
||||
+++ b/m4/.gitignore
|
||||
@@ -1 +1,3 @@
|
||||
*.m4
|
||||
+!ibus.m4
|
||||
+
|
||||
diff --git a/m4/ibus.m4 b/m4/ibus.m4
|
||||
new file mode 100644
|
||||
index 0000000..f8f074a
|
||||
--- /dev/null
|
||||
+++ ibus-m17n-1.3.2/m4/ibus.m4
|
||||
+++ b/m4/ibus.m4
|
||||
@@ -0,0 +1,52 @@
|
||||
+# IBUS_WITH_HOTKEYS([DEFAULT])
|
||||
+AC_DEFUN([IBUS_WITH_HOTKEYS], [
|
||||
@ -84,503 +93,245 @@ Index: ibus-m17n-1.3.2/m4/ibus.m4
|
||||
+ fi
|
||||
+ AC_SUBST(IBUS_SYMBOL_XML)
|
||||
+])
|
||||
Index: ibus-m17n-1.3.2/src/default.xml.in.in
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/default.xml.in.in
|
||||
+++ ibus-m17n-1.3.2/src/default.xml.in.in
|
||||
@@ -10,97 +10,114 @@
|
||||
<name>m17n:as:phonetic</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ক</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:bn:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>ক</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:gu:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>ક</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:hi:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:kn:kgp</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ಕ</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ks:kbd</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:mai:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ml:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>ക</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:mr:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ne:rom</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ने</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:or:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>କ</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:pa:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>ਕ</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sa:harvard-kyoto</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sd:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:si:wijesekera</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>සි</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ta:tamil99</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>க</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:te:inscript*</name>
|
||||
<rank>2</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>క</symbol>
|
||||
</engine>
|
||||
<!-- Samanala should have lower rank than other Sinhala
|
||||
engines since it is the only non-keyboard input method in
|
||||
@@ -109,57 +126,14 @@
|
||||
<name>m17n:si:samanala</name>
|
||||
<rank>0</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>සි</symbol>
|
||||
</engine>
|
||||
<!-- Chinese and Japanese engines which require preedit decoration. -->
|
||||
<engine>
|
||||
<name>m17n:ja:anthy</name>
|
||||
<rank>0</rank>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:cangjie</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:py-b5</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:py-gb</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:py</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:quick</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:tonepy-b5</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:tonepy-gb</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:tonepy</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
- </engine>
|
||||
- <engine>
|
||||
- <name>m17n:zh:util</name>
|
||||
- <rank>0</rank>
|
||||
- <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol>あ</symbol>
|
||||
</engine>
|
||||
<!-- Other Indic engines should be selected by default:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=640896 -->
|
||||
@@ -167,92 +141,312 @@
|
||||
<name>m17n:as:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ক</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:bn:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ক</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:gu:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ક</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:hi:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:kn:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ಕ</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ks:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:mai:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ml:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ക</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:mr:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ne:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:or:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>କ</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:pa:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ਕ</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sa:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:sd:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>क</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:si:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
<layout>default[lv3:ralt_switch]</layout>
|
||||
+ <symbol>සි</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:ta:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>க</symbol>
|
||||
</engine>
|
||||
<engine>
|
||||
<name>m17n:te:*</name>
|
||||
<rank>1</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>క</symbol>
|
||||
+ </engine>
|
||||
+ <!-- Tweak symbols: for most maps, their "title" properties
|
||||
+ fit in one character width. However, some of them are
|
||||
+ bit longer. -->
|
||||
+ <engine>
|
||||
+ <name>m17n:*:kbd</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:*:pre</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:*:post</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:am:sera</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>አ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:bo:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ཀ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:cr:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:dv:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:eo:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:fa:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ف</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:fr:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ii:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:iu:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:kk:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>قا</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:km:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ក</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:lo:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ກ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:nsk:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:oj:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ps:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ru:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>Я</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sv:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:syrc:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:tai:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>꫞</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:th:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>ท</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ur:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>خ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:vi:han</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>越</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:vi:nom*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>喃</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:vi:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol>Ắ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:yi:*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:bopomofo</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol>ㄅ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:cangjie</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol>倉</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:py*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol>拼</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:quick</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol>簡</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:tonepy*</name>
|
||||
+ <rank>0</rank>
|
||||
+ <preedit-highlight>TRUE</preedit-highlight>
|
||||
+ <symbol>调</symbol>
|
||||
</engine>
|
||||
<!-- Default for other engines. -->
|
||||
<engine>
|
||||
diff --git a/src/default.xml.in.in b/src/default.xml.in.in
|
||||
index 785ab05..8192878 100644
|
||||
--- a/src/default.xml.in.in
|
||||
+++ b/src/default.xml.in.in
|
||||
@@ -10,6 +10,8 @@
|
||||
<name>m17n:*</name>
|
||||
<rank>0</rank>
|
||||
<preedit-highlight>FALSE</preedit-highlight>
|
||||
+ <symbol></symbol>
|
||||
+ @IBUS_HOTKEYS_XML@
|
||||
</engine>
|
||||
<!-- Indic engines should be selected by default:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=640896 -->
|
||||
@@ -203,4 +205,209 @@
|
||||
<name>m17n:ja:anthy</name>
|
||||
<preedit-highlight>TRUE</preedit-highlight>
|
||||
</engine>
|
||||
+ <!-- Set IME symbols. -->
|
||||
+ <engine>
|
||||
+ <name>m17n:as:*</name>
|
||||
+ <symbol>ক</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:bn:*</name>
|
||||
+ <symbol>ক</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:gu:*</name>
|
||||
+ <symbol>ક</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:hi:*</name>
|
||||
+ <symbol>क</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:kn:*</name>
|
||||
+ <symbol>ಕ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ks:*</name>
|
||||
+ <symbol>क</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:mai:*</name>
|
||||
+ <symbol>क</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ml:*</name>
|
||||
+ <symbol>ക</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:mr:*</name>
|
||||
+ <symbol>क</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ne:*</name>
|
||||
+ <symbol>ने</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:or:*</name>
|
||||
+ <symbol>କ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:pa:*</name>
|
||||
+ <symbol>ਕ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sa:*</name>
|
||||
+ <symbol>क</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sd:*</name>
|
||||
+ <symbol>क</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:si:*</name>
|
||||
+ <symbol>සි</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ta:*</name>
|
||||
+ <symbol>க</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:te:*</name>
|
||||
+ <symbol>క</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:*:kbd</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:*:pre</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:*:post</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:am:sera</name>
|
||||
+ <symbol>አ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:bo:*</name>
|
||||
+ <symbol>ཀ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:cr:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:dv:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:eo:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:fa:*</name>
|
||||
+ <symbol>ف</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:fr:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ii:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:iu:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ja:anthy</name>
|
||||
+ <symbol>あ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:kk:*</name>
|
||||
+ <symbol>قا</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:km:*</name>
|
||||
+ <symbol>ក</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:lo:*</name>
|
||||
+ <symbol>ກ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:nsk:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:oj:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ps:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ru:*</name>
|
||||
+ <symbol>Я</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:sv:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:syrc:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:tai:*</name>
|
||||
+ <symbol>꫞</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:th:*</name>
|
||||
+ <symbol>ท</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:ur:*</name>
|
||||
+ <symbol>خ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:vi:han</name>
|
||||
+ <symbol>越</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:vi:nom*</name>
|
||||
+ <symbol>喃</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:vi:*</name>
|
||||
+ <symbol>Ắ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:yi:*</name>
|
||||
+ <symbol></symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:bopomofo</name>
|
||||
+ <symbol>ㄅ</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:cangjie</name>
|
||||
+ <symbol>倉</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:py*</name>
|
||||
+ <symbol>拼</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:quick</name>
|
||||
+ <symbol>簡</symbol>
|
||||
+ </engine>
|
||||
+ <engine>
|
||||
+ <name>m17n:zh:tonepy*</name>
|
||||
+ <symbol>调</symbol>
|
||||
+ </engine>
|
||||
</engines>
|
||||
Index: ibus-m17n-1.3.2/src/m17nutil.c
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/m17nutil.c
|
||||
+++ ibus-m17n-1.3.2/src/m17nutil.c
|
||||
@@ -122,6 +122,8 @@ ibus_m17n_engine_new (MSymbol lang,
|
||||
diff --git a/src/m17nutil.c b/src/m17nutil.c
|
||||
index 06e1b58..3e6b9f1 100644
|
||||
--- a/src/m17nutil.c
|
||||
+++ b/src/m17nutil.c
|
||||
@@ -12,7 +12,9 @@ static MConverter *utf8_converter = NULL;
|
||||
typedef enum {
|
||||
ENGINE_CONFIG_RANK_MASK = 1 << 0,
|
||||
ENGINE_CONFIG_LAYOUT_MASK = 1 << 1,
|
||||
- ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 2
|
||||
+ ENGINE_CONFIG_HOTKEYS_MASK = 1 << 2,
|
||||
+ ENGINE_CONFIG_SYMBOL_MASK = 1 << 3,
|
||||
+ ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK = 1 << 4
|
||||
} EngineConfigMask;
|
||||
|
||||
struct _EngineConfigNode {
|
||||
@@ -129,6 +131,8 @@ ibus_m17n_engine_new (MSymbol lang,
|
||||
"icon", engine_icon ? engine_icon : "",
|
||||
"layout", config->layout ? config->layout : "us",
|
||||
"rank", config->rank,
|
||||
@ -589,25 +340,38 @@ Index: ibus-m17n-1.3.2/src/m17nutil.c
|
||||
NULL);
|
||||
#else
|
||||
engine = ibus_engine_desc_new (engine_name,
|
||||
@@ -287,6 +289,14 @@ ibus_m17n_engine_config_parse_xml_node (
|
||||
cnode->config.layout = g_strdup (sub_node->text);
|
||||
@@ -271,6 +275,10 @@ ibus_m17n_get_engine_config (const gchar *engine_name)
|
||||
config->rank = cnode->config.rank;
|
||||
if (cnode->mask & ENGINE_CONFIG_LAYOUT_MASK)
|
||||
config->layout = cnode->config.layout;
|
||||
+ if (cnode->mask & ENGINE_CONFIG_HOTKEYS_MASK)
|
||||
+ config->hotkeys = cnode->config.hotkeys;
|
||||
+ if (cnode->mask & ENGINE_CONFIG_SYMBOL_MASK)
|
||||
+ config->symbol = cnode->config.symbol;
|
||||
if (cnode->mask & ENGINE_CONFIG_PREEDIT_HIGHLIGHT_MASK)
|
||||
config->preedit_highlight = cnode->config.preedit_highlight;
|
||||
}
|
||||
@@ -309,6 +317,16 @@ ibus_m17n_engine_config_parse_xml_node (EngineConfigNode *cnode,
|
||||
cnode->mask |= ENGINE_CONFIG_LAYOUT_MASK;
|
||||
continue;
|
||||
}
|
||||
+ if (g_strcmp0 (sub_node->name , "hotkeys") == 0) {
|
||||
+ cnode->config.hotkeys = g_strdup (sub_node->text);
|
||||
+ cnode->mask |= ENGINE_CONFIG_HOTKEYS_MASK;
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (g_strcmp0 (sub_node->name , "symbol") == 0) {
|
||||
+ cnode->config.symbol = g_strdup (sub_node->text);
|
||||
+ cnode->mask |= ENGINE_CONFIG_SYMBOL_MASK;
|
||||
+ continue;
|
||||
+ }
|
||||
if (g_strcmp0 (sub_node->name , "preedit-highlight") == 0) {
|
||||
if (g_ascii_strcasecmp ("TRUE", sub_node->text) == 0)
|
||||
cnode->config.preedit_highlight = TRUE;
|
||||
Index: ibus-m17n-1.3.2/src/m17nutil.h
|
||||
===================================================================
|
||||
--- ibus-m17n-1.3.2.orig/src/m17nutil.h
|
||||
+++ ibus-m17n-1.3.2/src/m17nutil.h
|
||||
diff --git a/src/m17nutil.h b/src/m17nutil.h
|
||||
index c7b283e..21b1bb9 100644
|
||||
--- a/src/m17nutil.h
|
||||
+++ b/src/m17nutil.h
|
||||
@@ -17,6 +17,12 @@ struct _IBusM17NEngineConfig {
|
||||
/* keyboard layout */
|
||||
gchar *layout;
|
||||
@ -621,3 +385,6 @@ Index: ibus-m17n-1.3.2/src/m17nutil.h
|
||||
/* whether to highlight preedit */
|
||||
gboolean preedit_highlight;
|
||||
};
|
||||
--
|
||||
1.7.6.1
|
||||
|
||||
|
@ -11,9 +11,13 @@
|
||||
%global _with_hotkeys --with-hotkeys
|
||||
%endif
|
||||
|
||||
%if (0%{?fedora} > 16)
|
||||
%global _enable_eekboard --enable_eekboard
|
||||
%endif
|
||||
|
||||
Name: ibus-m17n
|
||||
Version: 1.3.2
|
||||
Release: 10%{?dist}
|
||||
Release: 11%{?dist}
|
||||
Summary: The M17N engine for IBus platform
|
||||
License: GPLv2+
|
||||
Group: System Environment/Libraries
|
||||
@ -21,9 +25,10 @@ URL: http://code.google.com/p/ibus/
|
||||
Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz
|
||||
|
||||
Patch0: ibus-m17n-HEAD.patch
|
||||
Patch1: ibus-m17n-iok.patch
|
||||
Patch1: ibus-m17n-default-xml-override.patch
|
||||
Patch2: ibus-m17n-xkb-options.patch
|
||||
Patch3: ibus-m17n-xx-icon-symbol.patch
|
||||
Patch4: ibus-m17n-virtkbd.patch
|
||||
|
||||
# The following BR is for autogen and not necessary when packging
|
||||
# released tarballs.
|
||||
@ -39,10 +44,11 @@ BuildRequires: gtk2-devel
|
||||
%endif
|
||||
BuildRequires: libxklavier-devel
|
||||
BuildRequires: ibus-devel >= %{require_ibus_version}
|
||||
BuildRequires: eekboard-devel
|
||||
|
||||
Requires: ibus >= %{require_ibus_version}
|
||||
Requires: m17n-lib
|
||||
Requires: iok > 1.3.1
|
||||
Requires: eekboard
|
||||
|
||||
%description
|
||||
M17N engine for IBus input platform. It allows input of many languages using
|
||||
@ -51,13 +57,14 @@ the input table maps from m17n-db.
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1 -b .HEAD
|
||||
%patch1 -p1 -b .iok
|
||||
%patch1 -p1 -b .default-xml-override
|
||||
%patch2 -p1 -b .xkb-options
|
||||
%patch3 -p1 -b .xx-icon-symbol
|
||||
%patch4 -p1 -b .virtkbd
|
||||
NOCONFIGURE=1 ./autogen.sh
|
||||
|
||||
%build
|
||||
%configure --disable-static %{?_with_gtk} %{?_with_hotkeys}
|
||||
%configure --disable-static %{?_with_gtk} %{?_with_hotkeys} %{?_enable_eekboard}
|
||||
# make -C po update-gmo
|
||||
make %{?_smp_mflags}
|
||||
|
||||
@ -75,6 +82,10 @@ make DESTDIR=${RPM_BUILD_ROOT} install
|
||||
%{_datadir}/ibus/component/*
|
||||
|
||||
%changelog
|
||||
* Thu Sep 1 2011 Daiki Ueno <dueno@redhat.com> - 1.3.2-11
|
||||
- Add ibus-m17n-default-xml-override.patch.
|
||||
- Add ibus-m17n-virtkbd.patch, instead of ibus-m17n-iok.patch.
|
||||
|
||||
* Tue Aug 9 2011 Daiki Ueno <dueno@redhat.com> - 1.3.2-10
|
||||
- Set symbol for m17n:ne:rom.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user