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(a)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);