xend: Fix keymap handling
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 21 Jul 2008 08:47:07 +0000 (09:47 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 21 Jul 2008 08:47:07 +0000 (09:47 +0100)
Patch allows keymap to be specified inside vfb description and
allows VM configured keymap setting to override XenD default

Signed-off-by: Pat Campbell <plc@novell.com>
tools/python/xen/xend/image.py
tools/python/xen/xm/create.py

index 615e56da0fec85bf55bac644c651f13a10bea483..3b1fc4225c910c9ad7281382fe3d6ffa86e5f209 100644 (file)
@@ -265,9 +265,12 @@ class ImageHandler:
         has_vnc = int(vmConfig['platform'].get('vnc', 0)) != 0
         has_sdl = int(vmConfig['platform'].get('sdl', 0)) != 0
         opengl = 1
+        keymap = vmConfig['platform'].get("keymap")
         for dev_uuid in vmConfig['console_refs']:
             dev_type, dev_info = vmConfig['devices'][dev_uuid]
             if dev_type == 'vfb':
+                if 'keymap' in dev_info:
+                    keymap = dev_info.get('keymap',{})
                 vfb_type = dev_info.get('type', {})
                 if vfb_type == 'sdl':
                     self.display = dev_info.get('display', {})
@@ -279,7 +282,6 @@ class ImageHandler:
                     has_vnc = True
                 break
 
-        keymap = vmConfig['platform'].get("keymap")
         if keymap:
             ret.append("-k")
             ret.append(keymap)
index cef72c63f3f0213f670d4486116da0ecaa989719..30d2ce18bd2991e235abd63f6f6999b9e5be0461 100644 (file)
@@ -325,7 +325,7 @@ gopts.var('irq', val='IRQ',
          For example 'irq=7'.
          This option may be repeated to add more than one IRQ.""")
 
-gopts.var('vfb', val="type={vnc,sdl},vncunused=1,vncdisplay=N,vnclisten=ADDR,display=DISPLAY,xauthority=XAUTHORITY,vncpasswd=PASSWORD,opengl=1",
+gopts.var('vfb', val="type={vnc,sdl},vncunused=1,vncdisplay=N,vnclisten=ADDR,display=DISPLAY,xauthority=XAUTHORITY,vncpasswd=PASSWORD,opengl=1,keymap=FILE",
           fn=append_value, default=[],
           use="""Make the domain a framebuffer backend.
           The backend type should be either sdl or vnc.
@@ -336,7 +336,8 @@ gopts.var('vfb', val="type={vnc,sdl},vncunused=1,vncdisplay=N,vnclisten=ADDR,dis
           default password.
           For type=sdl, a viewer will be started automatically using the
           given DISPLAY and XAUTHORITY, which default to the current user's
-          ones.  OpenGL will be used by default unless opengl is set to 0.""")
+          ones.  OpenGL will be used by default unless opengl is set to 0.
+          keymap overrides the XendD configured default layout file.""")
 
 gopts.var('vif', val="type=TYPE,mac=MAC,bridge=BRIDGE,ip=IPADDR,script=SCRIPT," + \
           "backend=DOM,vifname=NAME,rate=RATE,model=MODEL,accel=ACCEL",
@@ -741,7 +742,7 @@ def configure_vfbs(config_devs, vals):
         for (k,v) in d.iteritems():
             if not k in [ 'vnclisten', 'vncunused', 'vncdisplay', 'display',
                           'videoram', 'xauthority', 'type', 'vncpasswd',
-                          'opengl' ]:
+                          'opengl', 'keymap' ]:
                 err("configuration option %s unknown to vfbs" % k)
             config.append([k,v])
         if not d.has_key("keymap"):