diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/sugar-session | 47 |
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...' |