Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rw-r--r--bin/sugar-session47
1 files changed, 47 insertions, 0 deletions
diff --git a/bin/sugar-session b/bin/sugar-session
index 2d9bb98..c891bdb 100644
--- a/bin/sugar-session
+++ b/bin/sugar-session
@@ -131,6 +131,47 @@ def setup_file_transfer_cb():
from jarabe.model import filetransfer
filetransfer.init()
+def setup_keyboard_cb(gconf_client):
+ logging.debug('STARTUP: setup_keyboard_cb')
+ try:
+ display = gtk.gdk.display_get_default()
+ if display is not None:
+ engine = xklavier.Engine(display)
+ else:
+ logging.debug('setup_keyboard_cb: Could not get default display.')
+ return
+
+ configrec = xklavier.ConfigRec()
+ configrec.get_from_server(engine)
+
+ layouts = gconf_client.get_list(\
+ '/desktop/sugar/peripherals/keyboard/layouts', gconf.VALUE_STRING)
+ layouts_list = []
+ variants_list = []
+ for layout in layouts:
+ layouts_list.append(layout.split('(')[0])
+ variants_list.append(layout.split('(')[1][:-1])
+
+ if layouts_list is not None and layouts_list is not [] \
+ and variants_list is not None and variants_list is not []:
+ configrec.set_layouts(layouts_list)
+ configrec.set_variants(variants_list)
+
+ model = gconf_client.get_string(\
+ '/desktop/sugar/peripherals/keyboard/model')
+ if model is not None:
+ configrec.set_model(model)
+
+ options = gconf_client.get_list(\
+ '/desktop/sugar/peripherals/keyboard/options', gconf.VALUE_STRING)
+ if options is not [] and options is not None:
+ configrec.set_options(options)
+
+ configrec.activate(engine)
+ except:
+ logging.exception('Error during keyboard configuration')
+ pass
+
def main():
cleanup_logs()
logger.start('shell')
@@ -170,6 +211,12 @@ def main():
gobject.idle_add(show_software_updates_cb)
try:
+ import xklavier
+ gobject.idle_add(setup_keyboard_cb, client)
+ except ImportError:
+ logging.debug('Could not load xklavier for keyboard configuration')
+
+ try:
gtk.main()
except KeyboardInterrupt:
print 'Ctrl+C pressed, exiting...'