Commit 4df23b64 authored by Hervé Poussineau's avatar Hervé Poussineau Committed by Gerd Hoffmann
Browse files

ps2: correctly handle 'get/set scancode' command



When getting scancode, current scancode must be preceded from reply ack.
When setting scancode, we must reject invalid scancodes.

Signed-off-by: default avatarHervé Poussineau <hpoussin@reactos.org>
Message-id: 1473969987-5890-3-git-send-email-hpoussin@reactos.org
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 06b3611f
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -296,16 +296,18 @@ void ps2_write_keyboard(void *opaque, int val)
        break;
    case KBD_CMD_SCANCODE:
        if (val == 0) {
            ps2_queue(&s->common, KBD_REPLY_ACK);
            if (s->scancode_set == 1)
                ps2_put_keycode(s, 0x43);
            else if (s->scancode_set == 2)
                ps2_put_keycode(s, 0x41);
            else if (s->scancode_set == 3)
                ps2_put_keycode(s, 0x3f);
        } else {
            if (val >= 1 && val <= 3)
        } else if (val >= 1 && val <= 3) {
            s->scancode_set = val;
            ps2_queue(&s->common, KBD_REPLY_ACK);
        } else {
            ps2_queue(&s->common, KBD_REPLY_RESEND);
        }
        s->common.write_cmd = -1;
        break;