From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=51023 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OmS5a-0007tt-RM for qemu-devel@nongnu.org; Fri, 20 Aug 2010 09:56:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OmS5Z-00060k-8z for qemu-devel@nongnu.org; Fri, 20 Aug 2010 09:56:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35604) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OmS5Z-00060Y-1F for qemu-devel@nongnu.org; Fri, 20 Aug 2010 09:56:57 -0400 Message-ID: <4C6E89A4.2060906@redhat.com> Date: Fri, 20 Aug 2010 15:56:52 +0200 From: Gerd Hoffmann MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 6/9] spice: add keyboard References: <1282221625-29501-1-git-send-email-kraxel@redhat.com> <1282221625-29501-7-git-send-email-kraxel@redhat.com> <4C6D3E92.8060604@codemonkey.ws> <4C6E766A.2000809@redhat.com> <4C6E809D.9050408@codemonkey.ws> In-Reply-To: <4C6E809D.9050408@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org Hi, > It's not actually ps/2 data. It's AT scan codes plus an internal > encoding to indicate press vs. release using the high bit. Additionally, > some special keys are encoded with two calls to kbd_put_keycode using > the 0xe0 prefix (the grey code). Wheee. From a brief look at the code it seems this *is* the spice wire protocol. One more place where spice uses knowledge about qemu internals. Unfortunaly this one escaped my attention until now, so it didn't got fixed :-( > So what I'm proposing is that we modify kbd_put_keycode to also reflect > this: > > // normal keys > kbd_keycode_press(at_keycode); // PS/2 at2raw(at_keycode) > kbd_keycode_release(at_keycode); // PS/2 0xf0, at2raw(at_keycode) > > // grey keys; PS/2 0xe0, at2raw(at_keycode) > kbd_keycode_press(0x80 | at_keycode); // PS/2 0xe0, 0xf0, > at2raw(at_keycode) > kbd_keycode_release(0x80 | at_keycode); // PS/2 0xe0, 0xf0, > at2raw(at_keycode) > > If it's not already too late, I'd suggest making this the Spice protocol > interface. No. I think for now I have to deal with the mess in case qemu decides to change the internal interface. And when ever touching the spice wire protocol to fixup this mess I will *not* use AT keycodes. Handling anything with extra internet / multimedia / whatever keys in a sane way is simply impossible with AT keycodes. linux input layer key codes should do. maybe usb hid is usable too, need to check. cheers, Gerd