94 lines
3.4 KiB
Diff
94 lines
3.4 KiB
Diff
From 0cc2abaab50e6668e525da093ef12ed0277d5c21 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/6] 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>
|
|
+ <!-- Some Indic engines expect AltGr is automatically mapped -->
|
|
+ <engine>
|
|
+ <name>m17n:*:inscript</name>
|
|
+ <layout>default[lv3:ralt_switch]</layout>
|
|
+ </engine>
|
|
+ <engine>
|
|
+ <name>m17n:si:*</name>
|
|
+ <layout>default[lv3:ralt_switch]</layout>
|
|
+ </engine>
|
|
<!-- Some CJK engines use preedit. -->
|
|
<engine>
|
|
<name>m17n:zh:cangjie</name>
|
|
diff --git a/src/m17nutil.c b/src/m17nutil.c
|
|
index b06f71d..201c8b4 100644
|
|
--- a/src/m17nutil.c
|
|
+++ b/src/m17nutil.c
|
|
@@ -15,7 +15,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 {
|
|
@@ -130,7 +131,7 @@ ibus_m17n_engine_new (MSymbol lang,
|
|
"language", msymbol_name (lang),
|
|
"license", "GPL",
|
|
"icon", engine_icon ? engine_icon : "",
|
|
- "layout", "us",
|
|
+ "layout", config->layout ? config->layout : "us",
|
|
"rank", config->rank,
|
|
NULL);
|
|
#else
|
|
@@ -272,6 +273,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;
|
|
}
|
|
@@ -304,6 +307,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;
|
|
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;
|
|
|
|
+ /* keyboard layout */
|
|
+ gchar *layout;
|
|
+
|
|
/* whether to highlight preedit */
|
|
gboolean preedit_highlight;
|
|
};
|
|
--
|
|
1.7.6.1
|
|
|