[Libvir] [PATCH][RFC] Add --keymap option to virt-install

Takahashi Tomohiro takatom at jp.fujitsu.com
Tue Mar 6 13:00:08 UTC 2007


Hi,

I would like to add --keymap option to virt-install in order to set up
jp106 keymap. Because I can't use jp106 keyboard. So, I made a patch
(notes:It relates python-virtinst)

  Usage: virt-install --keymap=ja

I confirmed that I can use jp106 keyboard on HVM domain.
But didn't confirm PV domain.

Please give me an advice, if you have it.

Signed-off-by: Tomohiro Takahashi <takatom at jp.fujitsu.com>

Thanks,
Tomohiro Takahashi.

==================================================================================
diff -uNrp ./libvirt.orig/src/xml.c ./libvirt/src/xml.c
--- ./libvirt.orig/src/xml.c        2007-02-15 01:22:02.000000000 +0900
+++ ./libvirt/src/xml.c     2007-03-06 20:17:38.000000000 +0900
@@ -246,6 +246,7 @@ static int virDomainParseXMLGraphicsDesc
                 xmlChar *vncport = xmlGetProp(node, BAD_CAST "port");
                 xmlChar *vnclisten = xmlGetProp(node, BAD_CAST "listen");
                 xmlChar *vncpasswd = xmlGetProp(node, BAD_CAST "passwd");
+                xmlChar *keymap = xmlGetProp(node, BAD_CAST "keymap");
                 if (vncport != NULL) {
                     long port = strtol((const char *)vncport, NULL, 10);
                     if (port == -1)
@@ -262,6 +263,10 @@ static int virDomainParseXMLGraphicsDesc
                     virBufferVSprintf(buf, "(vncpasswd %s)", vncpasswd);
                     xmlFree(vncpasswd);
                 }
+                if (keymap != NULL) {
+                    virBufferVSprintf(buf, "(keymap %s)", keymap);
+                    xmlFree(keymap);
+                }
             }
         }
         xmlFree(graphics_type);
@@ -305,6 +310,7 @@ static int virDomainParseXMLGraphicsDesc
             xmlChar *vncport = xmlGetProp(node, BAD_CAST "port");
             xmlChar *vnclisten = xmlGetProp(node, BAD_CAST "listen");
             xmlChar *vncpasswd = xmlGetProp(node, BAD_CAST "passwd");
+            xmlChar *keymap = xmlGetProp(node, BAD_CAST "keymap");
             if (vncport != NULL) {
                 long port = strtol((const char *)vncport, NULL, 10);
                 if (port == -1)
@@ -321,6 +327,10 @@ static int virDomainParseXMLGraphicsDesc
                 virBufferVSprintf(buf, "(vncpasswd %s)", vncpasswd);
                 xmlFree(vncpasswd);
             }
+            if (keymap != NULL) {
+                virBufferVSprintf(buf, "(keymap %s)", keymap);
+                xmlFree(keymap);
+            }
         }
         virBufferAdd(buf, "))", 2);
         xmlFree(graphics_type);
diff -uNrp ./libvirt.orig/src/xm_internal.c ./libvirt/src/xm_internal.c
--- ./libvirt.orig/src/xm_internal.c        2007-02-23 17:51:30.000000000 
+0900
+++ ./libvirt/src/xm_internal.c     2007-03-06 20:20:32.000000000 +0900
@@ -1863,6 +1863,9 @@ virConfPtr xenXMParseXMLToConfig(virConn
         if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "vncpasswd", 
"string(/domain/devices/graphics[@type='vnc']/@passwd)", 1,
                                           "cannot set the vncpasswd 
parameter") < 0)
             goto error;
+        if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "keymap", 
"string(/domain/devices/graphics[@type='vnc']/@keymap)", 1,
+                                          "cannot set the vncpasswd 
parameter") < 0)
+            goto error;

         /* XXX vncdisplay */
         /*
@@ -1894,6 +1897,7 @@ virConfPtr xenXMParseXMLToConfig(virConn
                     xmlChar *vncport = 
xmlGetProp(obj->nodesetval->nodeTab[i], BAD_CAST "port");
                     xmlChar *vnclisten = 
xmlGetProp(obj->nodesetval->nodeTab[i], BAD_CAST "listen");
                     xmlChar *vncpasswd = 
xmlGetProp(obj->nodesetval->nodeTab[i], BAD_CAST "passwd");
+                    xmlChar *keymap = 
xmlGetProp(obj->nodesetval->nodeTab[i], BAD_CAST "keymap");
                     int vncunused = vncport ? (!strcmp((const 
char*)vncport, "-1") ? 1 : 0) : 1;
                     if (vncunused)
                         len += 12;
@@ -1903,6 +1907,8 @@ virConfPtr xenXMParseXMLToConfig(virConn
                         len += 11 + strlen((const char*)vnclisten);
                     if (vncpasswd)
                         len += 11 + strlen((const char*)vncpasswd);
+                    if (keymap)
+                        len += 11 + strlen((const char*)keymap);
                     if ((val = malloc(len)) != NULL) {
                         strcpy(val, "type=vnc");
                         if (vncunused) {
@@ -1923,6 +1929,11 @@ virConfPtr xenXMParseXMLToConfig(virConn
                             strcat(val, (const char*)vncpasswd);
                             xmlFree(vncpasswd);
                         }
+                        if (keymap) {
+                            strcat(val, ",keymap=");
+                            strcat(val, (const char*)keymap);
+                            xmlFree(keymap);
+                        }
                     }
                 }
                 xmlFree(type);





More information about the libvir-list mailing list