diff options
author | Daiki Ueno <ueno@unixuser.org> | 2013-01-08 15:39:49 +0900 |
---|---|---|
committer | Daiki Ueno <ueno@unixuser.org> | 2013-01-08 18:12:00 +0900 |
commit | 6865cb03ff476b5c4cf18ff0bb505e87fa8ef7f9 (patch) | |
tree | acd513178974f950c2e7be937d8c167776c9cc86 /libcaribou/keyboard-model.vala | |
parent | 8532649f780515b85077c596c1159be76126272e (diff) | |
download | caribou-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.vala | 5 |
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); |