From: Erik van der Kouwe Date: Mon, 29 Nov 2010 21:36:18 +0000 (-0600) Subject: OpenBSD attempts to set the keyboard scancode set to 3, which we don't support. Howev... X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=03be513c0df4bd0c559a0613943ef580e054bb3f;p=palacios.git OpenBSD attempts to set the keyboard scancode set to 3, which we don't support. However, it checks afterwards to see whether it was successful and tried set 2 if it was not. This patch ignores requests for set 3, causing OpenBSD to work properly without requiring actual code to implement the scancode conversion. --- diff --git a/palacios/src/devices/keyboard.c b/palacios/src/devices/keyboard.c index 5b06858..5eb7d6b 100644 --- a/palacios/src/devices/keyboard.c +++ b/palacios/src/devices/keyboard.c @@ -876,15 +876,20 @@ static int keyboard_write_output(struct guest_info * core, ushort_t port, void * PrintDebug("Keyboard: scancode set being read\n"); push_to_output_queue(kbd, 0x45 - 2 * kbd->scancode_set, COMMAND, KEYBOARD); break; + case 1: + PrintError("keyboard: unsupported scancode set %d selected\n", data); + return -1; case 2: PrintDebug("Keyboard: scancode set being set to %d\n", data); kbd->scancode_set = data; push_to_output_queue(kbd, 0xfa, COMMAND, KEYBOARD); break; - case 1: case 3: - PrintError("keyboard: unsupported scancode set %d selected\n", data); - return -1; + /* OpenBSD wants scancode set 3, but falls back to 2 if a + * subsequent read reveals that the request was ignored + */ + PrintError("keyboard: ignoring request for scancode set %d\n", data); + break; default: PrintError("keyboard: unknown scancode set %d selected\n", data); return -1;