Support VNC keymap option with QEMU (Daniel Hokka Zakrisson)

This commit is contained in:
Daniel P. Berrange 2008-01-15 15:18:33 +00:00
parent 045d32a8e8
commit f6ba6e9eb7
4 changed files with 21 additions and 1 deletions

View File

@ -39,6 +39,7 @@ Patches have also been contributed by:
Jim Paris <jim@jtan.com> Jim Paris <jim@jtan.com>
Chris Lalancette <clalance@redhat.com> Chris Lalancette <clalance@redhat.com>
Guido Guenther <agx@sigxcpu.org> Guido Guenther <agx@sigxcpu.org>
Daniel Hokka Zakrisson <daniel@hozac.com>
[....send patches to get your name here....] [....send patches to get your name here....]

View File

@ -1,4 +1,9 @@
Mon Jan 15 09:18:53 EST 2008 Daniel P. Berrange <berrange@redhat.com> Tue Jan 15 10:01:53 EST 2008 Daniel P. Berrange <berrange@redhat.com>
* src/qemu_conf.h, src/qemu_conf.c: Add support for 'keymap'
parameter wrt to VNC servers (Daniel Hokka Zakrisson)
Tue Jan 15 09:18:53 EST 2008 Daniel P. Berrange <berrange@redhat.com>
* src/remote_internal.c: Fix off by one in checking SSH * src/remote_internal.c: Fix off by one in checking SSH
argv for NULL. Fix format args in error message to avoid argv for NULL. Fix format args in error message to avoid

View File

@ -218,6 +218,7 @@ void qemudFreeVMDef(struct qemud_vm_def *def) {
input = input->next; input = input->next;
free(prev); free(prev);
} }
xmlFree(def->keymap);
free(def); free(def);
} }
@ -1245,6 +1246,7 @@ static struct qemud_vm_def *qemudParseXML(virConnectPtr conn,
else else
strcpy(def->vncListen, driver->vncListen); strcpy(def->vncListen, driver->vncListen);
def->vncListen[BR_INET_ADDR_MAXLEN-1] = '\0'; def->vncListen[BR_INET_ADDR_MAXLEN-1] = '\0';
def->keymap = (char *) xmlGetProp(obj->nodesetval->nodeTab[0], BAD_CAST "keymap");
xmlFree(vncport); xmlFree(vncport);
xmlFree(vnclisten); xmlFree(vnclisten);
} else if (!strcmp((char *)prop, "sdl")) { } else if (!strcmp((char *)prop, "sdl")) {
@ -1807,6 +1809,12 @@ int qemudBuildCommandLine(virConnectPtr conn,
goto no_memory; goto no_memory;
if (!((*argv)[++n] = strdup(vncdisplay))) if (!((*argv)[++n] = strdup(vncdisplay)))
goto no_memory; goto no_memory;
if (vm->def->keymap) {
if (!((*argv)[++n] = strdup("-k")))
goto no_memory;
if (!((*argv)[++n] = strdup(vm->def->keymap)))
goto no_memory;
}
} else if (vm->def->graphicsType == QEMUD_GRAPHICS_NONE) { } else if (vm->def->graphicsType == QEMUD_GRAPHICS_NONE) {
/* Nada - we added -nographic earlier in this function */ /* Nada - we added -nographic earlier in this function */
} else { } else {
@ -2918,6 +2926,11 @@ char *qemudGenerateXML(virConnectPtr conn,
def->vncListen) < 0) def->vncListen) < 0)
goto no_memory; goto no_memory;
if (def->keymap &&
virBufferVSprintf(buf, " keymap='%s'",
def->keymap) < 0)
goto no_memory;
if (virBufferAdd(buf, "/>\n", -1) < 0) if (virBufferAdd(buf, "/>\n", -1) < 0)
goto no_memory; goto no_memory;
break; break;

View File

@ -206,6 +206,7 @@ struct qemud_vm_def {
int vncPort; int vncPort;
int vncActivePort; int vncActivePort;
char vncListen[BR_INET_ADDR_MAXLEN]; char vncListen[BR_INET_ADDR_MAXLEN];
char *keymap;
int ndisks; int ndisks;
struct qemud_vm_disk_def *disks; struct qemud_vm_disk_def *disks;