On Thu, Dec 19, 2013 at 16:46:50 +0100, Michal Privoznik wrote: > https://bugzilla.redhat.com/show_bug.cgi?id=1044806 > > Currently, sending the ANSI_A keycode from os_x codepage doesn't work as > it has a special value of 0x0. Our internal code handles that no > different to other not defined keycodes. Hence, in order to allow it we > must change all the undefined keycodes from 0 to -1 and adapt some code > too. > > # virsh send-key guestname --codeset os_x ANSI_A > error: invalid keycode: 'ANSI_A' > > # virsh send-key guestname --codeset os_x ANSI_B > # virsh send-key guestname --codeset os_x ANSI_C > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > src/util/virkeycode-mapgen.py | 4 ++-- > src/util/virkeycode.c | 4 ++-- > tools/virsh-domain.c | 2 +- > 3 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/src/util/virkeycode-mapgen.py b/src/util/virkeycode-mapgen.py > index 22b21b4..8360bfe 100755 > --- a/src/util/virkeycode-mapgen.py > +++ b/src/util/virkeycode-mapgen.py > @@ -86,12 +86,12 @@ for i in range(len(cols)): > if isname: > print "const char *virKeymapNames_" + name + "[] = {" > else: > - print "unsigned short virKeymapValues_" + name + "[] = {" > + print "int virKeymapValues_" + name + "[] = {" > > for entry in keycodes: > if isname: > print " " + quotestring(entry[i] or "NULL") + "," > else: > - print " " + (entry[i] or "0") + "," > + print " " + (entry[i] or "-1") + "," > > print "};\n" > diff --git a/src/util/virkeycode.c b/src/util/virkeycode.c > index 50594d6..7880a0a 100644 > --- a/src/util/virkeycode.c > +++ b/src/util/virkeycode.c > @@ -50,7 +50,7 @@ static const char **virKeymapNames[] = { > }; > verify(ARRAY_CARDINALITY(virKeymapNames) == VIR_KEYCODE_SET_LAST); > > -static unsigned short *virKeymapValues[] = { > +static int *virKeymapValues[] = { > [VIR_KEYCODE_SET_LINUX] = > virKeymapValues_linux, > [VIR_KEYCODE_SET_XT] = > @@ -113,7 +113,7 @@ int virKeycodeValueTranslate(virKeycodeSet from_codeset, > { > size_t i; > > - if (key_value <= 0) > + if (key_value < 0) > return -1; > > > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c > index 760dca5..b33b808 100644 > --- a/tools/virsh-domain.c > +++ b/tools/virsh-domain.c > @@ -7091,7 +7091,7 @@ cmdSendKey(vshControl *ctl, const vshCmd *cmd) > } > > if ((keycode = vshKeyCodeGetInt(opt->data)) <= 0) { This <= 0 above is suspicious too, isn't it? > - if ((keycode = virKeycodeValueFromString(codeset, opt->data)) <= 0) { > + if ((keycode = virKeycodeValueFromString(codeset, opt->data)) < 0) { > vshError(ctl, _("invalid keycode: '%s'"), opt->data); > goto cleanup; > } Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list