Index: xen-3.2-testing/tools/ioemu/sdl_keysym.h =================================================================== --- xen-3.2-testing.orig/tools/ioemu/sdl_keysym.h +++ xen-3.2-testing/tools/ioemu/sdl_keysym.h @@ -274,5 +274,27 @@ static name2keysym_t name2keysym[]={ {"Pause", SDLK_PAUSE}, {"Escape", SDLK_ESCAPE}, + /* dead keys */ +{"dead_grave", 0xfe50}, +{"dead_acute", 0xfe51}, +{"dead_circumflex", 0xfe52}, +{"dead_tilde", 0xfe53}, +{"dead_macron", 0xfe54}, +{"dead_brev", 0xfe55}, +{"dead_abovedot", 0xfe56}, +{"dead_diaeresis", 0xfe57}, +{"dead_abovering", 0xfe58}, +{"dead_doubleacute", 0xfe59}, +{"dead_caron", 0xfe5a}, +{"dead_cedilla", 0xfe5b}, +{"dead_ogonek", 0xfe5c}, +{"dead_iota", 0xfe5d}, +{"dead_voiced_sound", 0xfe5e}, +{"dead_semivoiced_sound", 0xfe5f}, +{"dead_belowdot", 0xfe60}, +{"dead_hook", 0xfe61}, +{"dead_horn", 0xfe62}, + {0,0}, }; + Index: xen-3.2-testing/tools/python/xen/xend/XendOptions.py =================================================================== --- xen-3.2-testing.orig/tools/python/xen/xend/XendOptions.py +++ xen-3.2-testing/tools/python/xen/xend/XendOptions.py @@ -315,6 +315,9 @@ class XendOptions: return self.get_config_string('vnc-x509-verify', self.xend_vnc_x509_verify) + def get_keymap(self): + return self.get_config_value('keymap', None) + class XendOptionsFile(XendOptions): """Default path to the config file.""" Index: xen-3.2-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.2-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.2-testing/tools/python/xen/xend/XendDomainInfo.py @@ -1556,6 +1556,9 @@ class XendDomainInfo: if devclass in XendDevices.valid_devices(): log.info("createDevice: %s : %s" % (devclass, scrub_password(config))) dev_uuid = config.get('uuid') + if 'keymap' not in config: + if 'keymap' in self.info['platform']: + config['keymap'] = self.info['platform']['keymap'] devid = self._createDevice(devclass, config) # store devid in XendConfig for caching reasons