summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--src/bin/e_xkb.c29
2 files changed, 18 insertions, 12 deletions
diff --git a/AUTHORS b/AUTHORS
index d93288ec6b..85ffc91e4c 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -35,3 +35,4 @@ Thomas Gstädtner <thomas@gstaedtner.net>
q66 <quaker66@gmail.com>
Tom Hacohen (TAsn) <tom@stosb.com>
Maxime Villard <rustyBSD@gmx.fr>
+Jeremy Zurcher <jeremy@asynk.ch>
diff --git a/src/bin/e_xkb.c b/src/bin/e_xkb.c
index 352fbe9ecd..473770359f 100644
--- a/src/bin/e_xkb.c
+++ b/src/bin/e_xkb.c
@@ -48,21 +48,26 @@ e_xkb_update(int cur_group)
eina_strbuf_append(buf, ",");
}
}
- eina_strbuf_append(buf, "'");
- /* use first entry in used layouts */
- cl = e_config->xkb.used_layouts->data;
+ eina_strbuf_append(buf, "' -variant '");
- if ((cl->variant)
-/* workaround xkb bug */
- && (!(!strcmp(cl->variant, "basic"))))
+ EINA_LIST_FOREACH(e_config->xkb.used_layouts, l, cl)
{
- eina_strbuf_append(buf, " -variant '");
- eina_strbuf_append(buf, cl->variant);
- /* workaround xkb bug where basic variants work with ',' at the
- * end, but dvorak (and mayby others) don't */
-// if (!strcmp(cl->variant, "basic")) eina_strbuf_append(buf, ",");
- eina_strbuf_append(buf, "'");
+ if (cl->variant)
+ {
+ if (strcmp(cl->variant, "basic"))
+ eina_strbuf_append(buf, cl->variant);
+ eina_strbuf_append(buf, ",");
+ /* workaround xkb bug where basic variants work with ',' at the
+ * end, but dvorak (and mayby others) don't */
+// if (!strcmp(cl->variant, "basic")) eina_strbuf_append(buf, ",");
+ }
+ else
+ eina_strbuf_append(buf, ",");
}
+ eina_strbuf_append(buf, "'");
+
+ /* use first entry in used layouts */
+ cl = e_config->xkb.used_layouts->data;
if (cl->model)
{