From fec479f03d60db13da362f50c3c715168fef7ba4 Mon Sep 17 00:00:00 2001 From: Sayamindu Dasgupta Date: Tue, 25 Aug 2009 17:16:50 +0000 Subject: Merge branch 'master' of git://git.sugarlabs.org/sugar/sugar-xkb-support --- (limited to 'bin') 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...' -- cgit v0.9.1