From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1H2Xv4-0001Kh-IX for qemu-devel@nongnu.org; Thu, 04 Jan 2007 14:06:30 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1H2Xv3-0001Jv-FH for qemu-devel@nongnu.org; Thu, 04 Jan 2007 14:06:30 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1H2Xv3-0001Jd-84 for qemu-devel@nongnu.org; Thu, 04 Jan 2007 14:06:29 -0500 Received: from [199.232.41.67] (helo=mx20.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA:32) (Exim 4.52) id 1H2Xv2-0001c6-MB for qemu-devel@nongnu.org; Thu, 04 Jan 2007 14:06:28 -0500 Received: from [32.97.182.145] (helo=e5.ny.us.ibm.com) by mx20.gnu.org with esmtp (Exim 4.52) id 1H2XtT-0007iL-AS for qemu-devel@nongnu.org; Thu, 04 Jan 2007 14:04:51 -0500 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e5.ny.us.ibm.com (8.13.8/8.12.11) with ESMTP id l04IvPsb019661 for ; Thu, 4 Jan 2007 13:57:25 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay04.pok.ibm.com (8.13.6/8.13.6/NCO v8.1.1) with ESMTP id l04IvCvP261446 for ; Thu, 4 Jan 2007 13:57:12 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l04IvB3o031968 for ; Thu, 4 Jan 2007 13:57:12 -0500 Message-ID: <459D4E06.4020907@linux.vnet.ibm.com> From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [patch] factor out commonly used scancode translation table References: <20070104172914.GG28746@aon.at> <459D3EF8.4030101@videotron.ca> <20070104180152.GH28746@aon.at> <20070104181030.GA3277@networkno.de> <20070104185209.GJ28746@aon.at> In-Reply-To: <20070104185209.GJ28746@aon.at> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 04 Jan 2007 19:06:31 -0000 To: qemu-devel@nongnu.org Bernhard Fischer wrote: > On Thu, Jan 04, 2007 at 06:10:30PM +0000, Thiemo Seufer wrote: > =20 >> Bernhard Fischer wrote: >> =20 >>> On Thu, Jan 04, 2007 at 12:52:56PM -0500, Jonathan Phenix wrote: >>> =20 >>>> Bernhard Fischer wrote: >>>> =20 >>>>> Hi, >>>>> >>>>> The attached patch moves the x_keycode_to_pc_keycode LUT from sdl.c= into >>>>> an x_keycode.c. This struct is also used by the GGI backend (that i= s not >>>>> yet merged =B9). >>>>> >>>>> Comments? >>>>> =20 >>>>> =20 >>>> How it is done right now, each time x_keycode.c is included, you wil= l=20 >>>> end up with an extra copy in the final executable. Perhaps that simp= ly=20 >>>> keeping the LUT in sdl.c but removing the 'static' keyword from it a= nd=20 >>>> creating a sdl.h file with the statement: >>>> =20 >>> Yes, or create one public accessor func (_translate_keycode() or the >>> like). I don't have SDL installed, so only have the LUT once, but you= 're >>> of course right. >>> >>> What's the preferred method? public LUT or public accessor? >>> =20 >> Public accessor, I'd say. Keystroke processing isn't performance criti= cal. >> =20 > > New patch with a public accessor is attached. Couldn't think of a bette= r > name, please feel free to change it.. > =20 Is it worth evening worry about this if the GGD patch isn't going to=20 eventually end up in CVS? Why have the abstraction if it's not going to be used? I'm not really=20 sure I see the value in having GGD... Regards, Anthony Liguori > thanks, > =20 > -----------------------------------------------------------------------= - > > --- ../qemu_trunk.orig/vl.h 2006-12-27 14:17:48.000000000 +0100 > +++ vl.h 2007-01-04 19:27:07.000000000 +0100 > @@ -869,6 +873,9 @@ void cocoa_display_init(DisplayState *ds > /* vnc.c */ > void vnc_display_init(DisplayState *ds, const char *display); > =20 > +/* x_keymap.c */ > +extern uint8_t _translate_keycode(const int key); > + > /* ide.c */ > #define MAX_DISKS 4 > =20 > --- ../qemu_trunk.orig/sdl.c 2006-12-11 23:33:26.000000000 +0100 > +++ sdl.c 2007-01-04 19:28:30.000000000 +0100 > @@ -122,88 +122,6 @@ static uint8_t sdl_keyevent_to_keycode(c > =20 > #else > =20 > -static const uint8_t x_keycode_to_pc_keycode[115] =3D { > - 0xc7, /* 97 Home */ > - 0xc8, /* 98 Up */ > - 0xc9, /* 99 PgUp */ > - 0xcb, /* 100 Left */ > - 0x4c, /* 101 KP-5 */ > - 0xcd, /* 102 Right */ > - 0xcf, /* 103 End */ > - 0xd0, /* 104 Down */ > - 0xd1, /* 105 PgDn */ > - 0xd2, /* 106 Ins */ > - 0xd3, /* 107 Del */ > - 0x9c, /* 108 Enter */ > - 0x9d, /* 109 Ctrl-R */ > - 0x0, /* 110 Pause */ > - 0xb7, /* 111 Print */ > - 0xb5, /* 112 Divide */ > - 0xb8, /* 113 Alt-R */ > - 0xc6, /* 114 Break */ =20 > - 0x0, /* 115 */ > - 0x0, /* 116 */ > - 0x0, /* 117 */ > - 0x0, /* 118 */ > - 0x0, /* 119 */ > - 0x0, /* 120 */ > - 0x0, /* 121 */ > - 0x0, /* 122 */ > - 0x0, /* 123 */ > - 0x0, /* 124 */ > - 0x0, /* 125 */ > - 0x0, /* 126 */ > - 0x0, /* 127 */ > - 0x0, /* 128 */ > - 0x79, /* 129 Henkan */ > - 0x0, /* 130 */ > - 0x7b, /* 131 Muhenkan */ > - 0x0, /* 132 */ > - 0x7d, /* 133 Yen */ > - 0x0, /* 134 */ > - 0x0, /* 135 */ > - 0x47, /* 136 KP_7 */ > - 0x48, /* 137 KP_8 */ > - 0x49, /* 138 KP_9 */ > - 0x4b, /* 139 KP_4 */ > - 0x4c, /* 140 KP_5 */ > - 0x4d, /* 141 KP_6 */ > - 0x4f, /* 142 KP_1 */ > - 0x50, /* 143 KP_2 */ > - 0x51, /* 144 KP_3 */ > - 0x52, /* 145 KP_0 */ > - 0x53, /* 146 KP_. */ > - 0x47, /* 147 KP_HOME */ > - 0x48, /* 148 KP_UP */ > - 0x49, /* 149 KP_PgUp */ > - 0x4b, /* 150 KP_Left */ > - 0x4c, /* 151 KP_ */ > - 0x4d, /* 152 KP_Right */ > - 0x4f, /* 153 KP_End */ > - 0x50, /* 154 KP_Down */ > - 0x51, /* 155 KP_PgDn */ > - 0x52, /* 156 KP_Ins */ > - 0x53, /* 157 KP_Del */ > - 0x0, /* 158 */ > - 0x0, /* 159 */ > - 0x0, /* 160 */ > - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 170 */ > - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 180 */ > - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 190 */ > - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 200 */ > - 0x0, /* 201 */ > - 0x0, /* 202 */ > - 0x0, /* 203 */ > - 0x0, /* 204 */ > - 0x0, /* 205 */ > - 0x0, /* 206 */ > - 0x0, /* 207 */ > - 0x70, /* 208 Hiragana_Katakana */ > - 0x0, /* 209 */ > - 0x0, /* 210 */ > - 0x73, /* 211 backslash */ > -}; > - > static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) > { > int keycode; > @@ -216,7 +134,7 @@ static uint8_t sdl_keyevent_to_keycode(c > keycode -=3D 8; /* just an offset */ > } else if (keycode < 212) { > /* use conversion table */ > - keycode =3D x_keycode_to_pc_keycode[keycode - 97]; > + keycode =3D _translate_keycode(keycode - 97); > } else { > keycode =3D 0; > } > --- ../qemu_trunk.orig/x_keymap.c 1970-01-01 01:00:00.000000000 +0100 > +++ x_keymap.c 2007-01-04 19:25:16.000000000 +0100 > @@ -0,0 +1,110 @@ > +/* > + * QEMU SDL display driver > + * > + * Copyright (c) 2003 Fabrice Bellard > + * > + * Permission is hereby granted, free of charge, to any person obtaini= ng a copy > + * of this software and associated documentation files (the "Software"= ), to deal > + * in the Software without restriction, including without limitation t= he rights > + * to use, copy, modify, merge, publish, distribute, sublicense, and/o= r sell > + * copies of the Software, and to permit persons to whom the Software = is > + * furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be incl= uded in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXP= RESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABI= LITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT S= HALL > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES O= R OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARI= SING FROM, > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALI= NGS IN > + * THE SOFTWARE. > + */ > +#include "vl.h" > +static const uint8_t x_keycode_to_pc_keycode[115] =3D { > + 0xc7, /* 97 Home */ > + 0xc8, /* 98 Up */ > + 0xc9, /* 99 PgUp */ > + 0xcb, /* 100 Left */ > + 0x4c, /* 101 KP-5 */ > + 0xcd, /* 102 Right */ > + 0xcf, /* 103 End */ > + 0xd0, /* 104 Down */ > + 0xd1, /* 105 PgDn */ > + 0xd2, /* 106 Ins */ > + 0xd3, /* 107 Del */ > + 0x9c, /* 108 Enter */ > + 0x9d, /* 109 Ctrl-R */ > + 0x0, /* 110 Pause */ > + 0xb7, /* 111 Print */ > + 0xb5, /* 112 Divide */ > + 0xb8, /* 113 Alt-R */ > + 0xc6, /* 114 Break */ > + 0x0, /* 115 */ > + 0x0, /* 116 */ > + 0x0, /* 117 */ > + 0x0, /* 118 */ > + 0x0, /* 119 */ > + 0x0, /* 120 */ > + 0x0, /* 121 */ > + 0x0, /* 122 */ > + 0x0, /* 123 */ > + 0x0, /* 124 */ > + 0x0, /* 125 */ > + 0x0, /* 126 */ > + 0x0, /* 127 */ > + 0x0, /* 128 */ > + 0x79, /* 129 Henkan */ > + 0x0, /* 130 */ > + 0x7b, /* 131 Muhenkan */ > + 0x0, /* 132 */ > + 0x7d, /* 133 Yen */ > + 0x0, /* 134 */ > + 0x0, /* 135 */ > + 0x47, /* 136 KP_7 */ > + 0x48, /* 137 KP_8 */ > + 0x49, /* 138 KP_9 */ > + 0x4b, /* 139 KP_4 */ > + 0x4c, /* 140 KP_5 */ > + 0x4d, /* 141 KP_6 */ > + 0x4f, /* 142 KP_1 */ > + 0x50, /* 143 KP_2 */ > + 0x51, /* 144 KP_3 */ > + 0x52, /* 145 KP_0 */ > + 0x53, /* 146 KP_. */ > + 0x47, /* 147 KP_HOME */ > + 0x48, /* 148 KP_UP */ > + 0x49, /* 149 KP_PgUp */ > + 0x4b, /* 150 KP_Left */ > + 0x4c, /* 151 KP_ */ > + 0x4d, /* 152 KP_Right */ > + 0x4f, /* 153 KP_End */ > + 0x50, /* 154 KP_Down */ > + 0x51, /* 155 KP_PgDn */ > + 0x52, /* 156 KP_Ins */ > + 0x53, /* 157 KP_Del */ > + 0x0, /* 158 */ > + 0x0, /* 159 */ > + 0x0, /* 160 */ > + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 170 */ > + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 180 */ > + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 190 */ > + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 200 */ > + 0x0, /* 201 */ > + 0x0, /* 202 */ > + 0x0, /* 203 */ > + 0x0, /* 204 */ > + 0x0, /* 205 */ > + 0x0, /* 206 */ > + 0x0, /* 207 */ > + 0x70, /* 208 Hiragana_Katakana */ > + 0x0, /* 209 */ > + 0x0, /* 210 */ > + 0x73, /* 211 backslash */ > +}; > + > +uint8_t _translate_keycode(const int key) > +{ > + return x_keycode_to_pc_keycode[key]; > +} > --- ../qemu_trunk.orig/Makefile.target 2007-01-04 14:38:58.000000000 +0= 100 > +++ Makefile.target 2007-01-04 19:39:21.000000000 +0100 > @@ -397,6 +397,9 @@ ifdef CONFIG_COREAUDIO > COCOA_LIBS+=3D-framework CoreAudio > endif > endif > +ifdef CONFIG_SDL > +VL_OBJS+=3Dx_keymap.o > +endif > ifdef CONFIG_SLIRP > CPPFLAGS+=3D-I$(SRC_PATH)/slirp > SLIRP_OBJS=3Dcksum.o if.o ip_icmp.o ip_input.o ip_output.o \ > =20 > -----------------------------------------------------------------------= - > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://lists.nongnu.org/mailman/listinfo/qemu-devel > =20