summaryrefslogtreecommitdiff
path: root/libcaribou/keyboard-model.vala
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@unixuser.org>2013-01-08 15:39:49 +0900
committerDaiki Ueno <ueno@unixuser.org>2013-01-08 18:12:00 +0900
commit6865cb03ff476b5c4cf18ff0bb505e87fa8ef7f9 (patch)
treeacd513178974f950c2e7be937d8c167776c9cc86 /libcaribou/keyboard-model.vala
parent8532649f780515b85077c596c1159be76126272e (diff)
downloadcaribou-wip/xkbfile.tar.gz
Load keyboard symbols from xkbfile as a fallbackwip/xkbfile
When not layout file is found, try to read symbols from XKB rules and replace symbols in the base ("us") layout.
Diffstat (limited to 'libcaribou/keyboard-model.vala')
-rw-r--r--libcaribou/keyboard-model.vala5
1 files changed, 5 insertions, 0 deletions
diff --git a/libcaribou/keyboard-model.vala b/libcaribou/keyboard-model.vala
index 785a668..5327026 100644
--- a/libcaribou/keyboard-model.vala
+++ b/libcaribou/keyboard-model.vala
@@ -14,6 +14,7 @@ namespace Caribou {
private Gee.HashMap<string, GroupModel> groups;
private KeyModel last_activated_key;
private Gee.HashSet<KeyModel> active_mod_keys;
+ private GroupModel base_group;
construct {
uint grpid;
@@ -25,6 +26,7 @@ namespace Caribou {
xadapter = XAdapter.get_default ();
xadapter.group_changed.connect (on_group_changed);
+ base_group = XmlDeserializer.load_group (keyboard_type, "us", "");
xadapter.get_groups (out grps, out variants);
@@ -42,6 +44,9 @@ namespace Caribou {
private void populate_group (string group, string variant) {
GroupModel grp = XmlDeserializer.load_group (keyboard_type,
group, variant);
+ if (grp == null)
+ grp = xadapter.load_group (base_group, group, variant);
+
if (grp != null) {
groups.set (GroupModel.create_group_name (group, variant), grp);
grp.key_clicked.connect (on_key_clicked);