Message ID | 1477378861-18062-1-git-send-email-hpoussin@reactos.org |
---|---|
State | New |
Headers | show |
On Tue, Oct 25, 2016 at 09:01:01AM +0200, Hervé Poussineau wrote: > ADB devices must take new handler into account only when they recognize it. > This lets operating systems probe for valid/invalid handles, to know device capabilities. > > Add a FIXME in keyboard handler, which should use a different translation > table depending of the selected handler. > > Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> Applied to ppc-for-2.8, thanks. > --- > hw/input/adb.c | 26 +++++++++++++++++++++++--- > 1 file changed, 23 insertions(+), 3 deletions(-) > > diff --git a/hw/input/adb.c b/hw/input/adb.c > index 3d39368..43d3205 100644 > --- a/hw/input/adb.c > +++ b/hw/input/adb.c > @@ -396,9 +396,15 @@ static int adb_kbd_request(ADBDevice *d, uint8_t *obuf, > d->devaddr = buf[1] & 0xf; > break; > default: > - /* XXX: check this */ > d->devaddr = buf[1] & 0xf; > - d->handler = buf[2]; > + /* we support handlers: > + * 1: Apple Standard Keyboard > + * 2: Apple Extended Keyboard (LShift = RShift) > + * 3: Apple Extended Keyboard (LShift != RShift) > + */ > + if (buf[2] == 1 || buf[2] == 2 || buf[2] == 3) { > + d->handler = buf[2]; > + } > break; > } > } > @@ -437,6 +443,7 @@ static void adb_keyboard_event(DeviceState *dev, QemuConsole *src, > if (qcode >= ARRAY_SIZE(qcode_to_adb_keycode)) { > return; > } > + /* FIXME: take handler into account when translating qcode */ > keycode = qcode_to_adb_keycode[qcode]; > if (keycode == NO_KEY) { /* We don't want to send this to the guest */ > ADB_DPRINTF("Ignoring NO_KEY\n"); > @@ -631,8 +638,21 @@ static int adb_mouse_request(ADBDevice *d, uint8_t *obuf, > d->devaddr = buf[1] & 0xf; > break; > default: > - /* XXX: check this */ > d->devaddr = buf[1] & 0xf; > + /* we support handlers: > + * 0x01: Classic Apple Mouse Protocol / 100 cpi operations > + * 0x02: Classic Apple Mouse Protocol / 200 cpi operations > + * we don't support handlers (at least): > + * 0x03: Mouse systems A3 trackball > + * 0x04: Extended Apple Mouse Protocol > + * 0x2f: Microspeed mouse > + * 0x42: Macally > + * 0x5f: Microspeed mouse > + * 0x66: Microspeed mouse > + */ > + if (buf[2] == 1 || buf[2] == 2) { > + d->handler = buf[2]; > + } > break; > } > }
diff --git a/hw/input/adb.c b/hw/input/adb.c index 3d39368..43d3205 100644 --- a/hw/input/adb.c +++ b/hw/input/adb.c @@ -396,9 +396,15 @@ static int adb_kbd_request(ADBDevice *d, uint8_t *obuf, d->devaddr = buf[1] & 0xf; break; default: - /* XXX: check this */ d->devaddr = buf[1] & 0xf; - d->handler = buf[2]; + /* we support handlers: + * 1: Apple Standard Keyboard + * 2: Apple Extended Keyboard (LShift = RShift) + * 3: Apple Extended Keyboard (LShift != RShift) + */ + if (buf[2] == 1 || buf[2] == 2 || buf[2] == 3) { + d->handler = buf[2]; + } break; } } @@ -437,6 +443,7 @@ static void adb_keyboard_event(DeviceState *dev, QemuConsole *src, if (qcode >= ARRAY_SIZE(qcode_to_adb_keycode)) { return; } + /* FIXME: take handler into account when translating qcode */ keycode = qcode_to_adb_keycode[qcode]; if (keycode == NO_KEY) { /* We don't want to send this to the guest */ ADB_DPRINTF("Ignoring NO_KEY\n"); @@ -631,8 +638,21 @@ static int adb_mouse_request(ADBDevice *d, uint8_t *obuf, d->devaddr = buf[1] & 0xf; break; default: - /* XXX: check this */ d->devaddr = buf[1] & 0xf; + /* we support handlers: + * 0x01: Classic Apple Mouse Protocol / 100 cpi operations + * 0x02: Classic Apple Mouse Protocol / 200 cpi operations + * we don't support handlers (at least): + * 0x03: Mouse systems A3 trackball + * 0x04: Extended Apple Mouse Protocol + * 0x2f: Microspeed mouse + * 0x42: Macally + * 0x5f: Microspeed mouse + * 0x66: Microspeed mouse + */ + if (buf[2] == 1 || buf[2] == 2) { + d->handler = buf[2]; + } break; } }
ADB devices must take new handler into account only when they recognize it. This lets operating systems probe for valid/invalid handles, to know device capabilities. Add a FIXME in keyboard handler, which should use a different translation table depending of the selected handler. Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> --- hw/input/adb.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-)