scancodes.cpp

Go to the documentation of this file.
00001 /* ES40 emulator.
00002  * Copyright (C) 2007-2008 by the ES40 Emulator Project
00003  *
00004  * WWW    : http://sourceforge.net/projects/es40
00005  * E-mail : camiel@camicom.com
00006  * 
00007  *  This file is based upon Bochs.
00008  *
00009  *  Copyright (C) 2002  MandrakeSoft S.A.
00010  *
00011  *    MandrakeSoft S.A.
00012  *    43, rue d'Aboukir
00013  *    75002 Paris - France
00014  *    http://www.linux-mandrake.com/
00015  *    http://www.mandrakesoft.com/
00016  *
00017  *  This library is free software; you can redistribute it and/or
00018  *  modify it under the terms of the GNU Lesser General Public
00019  *  License as published by the Free Software Foundation; either
00020  *  version 2 of the License, or (at your option) any later version.
00021  *
00022  *  This library is distributed in the hope that it will be useful,
00023  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00024  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00025  *  Lesser General Public License for more details.
00026  *
00027  *  You should have received a copy of the GNU Lesser General Public
00028  *  License along with this library; if not, write to the Free Software
00029  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00030  */
00031 
00046 #include "../StdAfx.h"
00047 
00048 //#include "bochs.h"
00049 #include "scancodes.h"
00050 
00051 unsigned char translation8042[256] = {
00052   0xff,0x43,0x41,0x3f,0x3d,0x3b,0x3c,0x58,0x64,0x44,0x42,0x40,0x3e,0x0f,0x29,0x59,
00053   0x65,0x38,0x2a,0x70,0x1d,0x10,0x02,0x5a,0x66,0x71,0x2c,0x1f,0x1e,0x11,0x03,0x5b,
00054   0x67,0x2e,0x2d,0x20,0x12,0x05,0x04,0x5c,0x68,0x39,0x2f,0x21,0x14,0x13,0x06,0x5d,
00055   0x69,0x31,0x30,0x23,0x22,0x15,0x07,0x5e,0x6a,0x72,0x32,0x24,0x16,0x08,0x09,0x5f,
00056   0x6b,0x33,0x25,0x17,0x18,0x0b,0x0a,0x60,0x6c,0x34,0x35,0x26,0x27,0x19,0x0c,0x61,
00057   0x6d,0x73,0x28,0x74,0x1a,0x0d,0x62,0x6e,0x3a,0x36,0x1c,0x1b,0x75,0x2b,0x63,0x76,
00058   0x55,0x56,0x77,0x78,0x79,0x7a,0x0e,0x7b,0x7c,0x4f,0x7d,0x4b,0x47,0x7e,0x7f,0x6f,
00059   0x52,0x53,0x50,0x4c,0x4d,0x48,0x01,0x45,0x57,0x4e,0x51,0x4a,0x37,0x49,0x46,0x54,
00060   0x80,0x81,0x82,0x41,0x54,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
00061   0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
00062   0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
00063   0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
00064   0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,
00065   0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,
00066   0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
00067   0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
00068 };
00069 
00070 // Definition of scancodes make and break,
00071 // for each set (mf1/xt , mf2/at , mf3/ps2)
00072 // The table must be in BX_KEY order
00073 //
00074 scancode      scancodes[BX_KEY_NBKEYS][3] =
00075 {
00076   { 
00077     // BX_KEY_CTRL_L ( ibm 58)
00078     { "\x1D" , "\x9D" },
00079     { "\x14" , "\xF0\x14" },
00080     { "\x11" , "\xF0\x11" },
00081   },
00082 
00083   { 
00084     // BX_KEY_SHIFT_L ( ibm 44)
00085     { "\x2A" , "\xAA" },
00086     { "\x12" , "\xF0\x12" },
00087     { "\x12" , "\xF0\x12" },
00088   },
00089 
00090   { 
00091     // BX_KEY_F1 ( ibm 112 )
00092     { "\x3B" , "\xBB" },
00093     { "\x05" , "\xF0\x05" },
00094     { "\x07" , "\xF0\x07" },
00095   },
00096 
00097   { 
00098     // BX_KEY_F2 ( ibm 113 )
00099     { "\x3C" , "\xBC" },
00100     { "\x06" , "\xF0\x06" },
00101     { "\x0F" , "\xF0\x0F" },
00102   },
00103 
00104   { 
00105     // BX_KEY_F3 ( ibm 114 )
00106     { "\x3D" , "\xBD" },
00107     { "\x04" , "\xF0\x04" },
00108     { "\x17" , "\xF0\x17" },
00109   },
00110 
00111   { 
00112     // BX_KEY_F4 ( ibm 115 )
00113     { "\x3E" , "\xBE" },
00114     { "\x0C" , "\xF0\x0C" },
00115     { "\x1F" , "\xF0\x1F" },
00116   },
00117 
00118   { 
00119     // BX_KEY_F5 ( ibm 116 )
00120     { "\x3F" , "\xBF" },
00121     { "\x03" , "\xF0\x03" },
00122     { "\x27" , "\xF0\x27" },
00123   },
00124 
00125   { 
00126     // BX_KEY_F6 ( ibm 117 )
00127     { "\x40" , "\xC0" },
00128     { "\x0B" , "\xF0\x0B" },
00129     { "\x2F" , "\xF0\x2F" },
00130   },
00131 
00132   {
00133     // BX_KEY_F7 ( ibm 118 )
00134     { "\x41" , "\xC1" },
00135     { "\x83" , "\xF0\x83" },
00136     { "\x37" , "\xF0\x37" },
00137   },
00138 
00139   { 
00140     // BX_KEY_F8 ( ibm 119 )
00141     { "\x42" , "\xC2" },
00142     { "\x0A" , "\xF0\x0A" },
00143     { "\x3F" , "\xF0\x3F" },
00144   },
00145 
00146   { 
00147     // BX_KEY_F9 ( ibm 120 )
00148     { "\x43" , "\xC3" },
00149     { "\x01" , "\xF0\x01" },
00150     { "\x47" , "\xF0\x47" },
00151   },
00152 
00153   { 
00154     // BX_KEY_F10 ( ibm 121 )
00155     { "\x44" , "\xC4" },
00156     { "\x09" , "\xF0\x09" },
00157     { "\x4F" , "\xF0\x4F" },
00158   },
00159 
00160   { 
00161     // BX_KEY_F11 ( ibm 122 )
00162     { "\x57" , "\xD7" },
00163     { "\x78" , "\xF0\x78" },
00164     { "\x56" , "\xF0\x56" },
00165   },
00166 
00167   { 
00168     // BX_KEY_F12 ( ibm 123 )
00169     { "\x58" , "\xD8" },
00170     { "\x07" , "\xF0\x07" },
00171     { "\x5E" , "\xF0\x5E" },
00172   },
00173 
00174   { 
00175     // BX_KEY_CTRL_R ( ibm 64 )
00176     { "\xE0\x1D" , "\xE0\x9D" },
00177     { "\xE0\x14" , "\xE0\xF0\x14" },
00178     { "\x58" ,     "\xF0x58" },
00179     },
00180 
00181   { 
00182     // BX_KEY_SHIFT_R ( ibm 57 )
00183     { "\x36" , "\xB6" },
00184     { "\x59" , "\xF0\x59" },
00185     { "\x59" , "\xF0\x59" },
00186   },
00187 
00188   { 
00189     // BX_KEY_CAPS_LOCK ( ibm 30 )
00190     { "\x3A" , "\xBA" },
00191     { "\x58" , "\xF0\x58" },
00192     { "\x14" , "\xF0\x14" },
00193   },
00194 
00195   { 
00196     // BX_KEY_NUM_LOCK ( ibm 90 )
00197     { "\x45" , "\xC5" },
00198     { "\x77" , "\xF0\x77" },
00199     { "\x76" , "\xF0\x76" },
00200   },
00201 
00202   { 
00203     // BX_KEY_ALT_L ( ibm 60 )
00204     { "\x38" , "\xB8" },
00205     { "\x11" , "\xF0\x11" },
00206     { "\x19" , "\xF0\x19" },
00207   },
00208 
00209   { 
00210     // BX_KEY_ALT_R ( ibm 62 )
00211     { "\xE0\x38" , "\xE0\xB8" },
00212     { "\xE0\x11" , "\xE0\xF0\x11" },
00213     { "\x39" ,     "\xF0\x39" },
00214     },
00215 
00216   { 
00217     // BX_KEY_A ( ibm 31 )
00218     { "\x1E" , "\x9E" },
00219     { "\x1C" , "\xF0\x1C" },
00220     { "\x1C" , "\xF0\x1C" },
00221   },
00222 
00223   { 
00224     // BX_KEY_B ( ibm 50 )
00225     { "\x30" , "\xB0" },
00226     { "\x32" , "\xF0\x32" },
00227     { "\x32" , "\xF0\x32" },
00228   },
00229 
00230   { 
00231     // BX_KEY_C ( ibm 48 )
00232     { "\x2E" , "\xAE" },
00233     { "\x21" , "\xF0\x21" },
00234     { "\x21" , "\xF0\x21" },
00235   },
00236 
00237   { 
00238     // BX_KEY_D ( ibm 33 )
00239     { "\x20" , "\xA0" },
00240     { "\x23" , "\xF0\x23" },
00241     { "\x23" , "\xF0\x23" },
00242   },
00243 
00244   { 
00245     // BX_KEY_E ( ibm 19 )
00246     { "\x12" , "\x92" },
00247     { "\x24" , "\xF0\x24" },
00248     { "\x24" , "\xF0\x24" },
00249   },
00250 
00251   { 
00252     // BX_KEY_F ( ibm 34 )
00253     { "\x21" , "\xA1" },
00254     { "\x2B" , "\xF0\x2B" },
00255     { "\x2B" , "\xF0\x2B" },
00256   },
00257 
00258   { 
00259     // BX_KEY_G ( ibm 35 )
00260     { "\x22" , "\xA2" },
00261     { "\x34" , "\xF0\x34" },
00262     { "\x34" , "\xF0\x34" },
00263   },
00264 
00265   { 
00266     // BX_KEY_H ( ibm 36 )
00267     { "\x23" , "\xA3" },
00268     { "\x33" , "\xF0\x33" },
00269     { "\x33" , "\xF0\x33" },
00270   },
00271 
00272   { 
00273     // BX_KEY_I ( ibm 24 )
00274     { "\x17" , "\x97" },
00275     { "\x43" , "\xF0\x43" },
00276     { "\x43" , "\xF0\x43" },
00277   },
00278 
00279   { 
00280     // BX_KEY_J ( ibm 37 )
00281     { "\x24" , "\xA4" },
00282     { "\x3B" , "\xF0\x3B" },
00283     { "\x3B" , "\xF0\x3B" },
00284   },
00285 
00286   { 
00287     // BX_KEY_K ( ibm 38 )
00288     { "\x25" , "\xA5" },
00289     { "\x42" , "\xF0\x42" },
00290     { "\x42" , "\xF0\x42" },
00291   },
00292 
00293   { 
00294     // BX_KEY_L ( ibm 39 )
00295     { "\x26" , "\xA6" },
00296     { "\x4B" , "\xF0\x4B" },
00297     { "\x4B" , "\xF0\x4B" },
00298   },
00299 
00300   { 
00301     // BX_KEY_M ( ibm 52 )
00302     { "\x32" , "\xB2" },
00303     { "\x3A" , "\xF0\x3A" },
00304     { "\x3A" , "\xF0\x3A" },
00305   },
00306 
00307   { 
00308     // BX_KEY_N ( ibm 51 )
00309     { "\x31" , "\xB1" },
00310     { "\x31" , "\xF0\x31" },
00311     { "\x31" , "\xF0\x31" },
00312   },
00313 
00314   { 
00315     // BX_KEY_O ( ibm 25 )
00316     { "\x18" , "\x98" },
00317     { "\x44" , "\xF0\x44" },
00318     { "\x44" , "\xF0\x44" },
00319   },
00320 
00321   { 
00322     // BX_KEY_P ( ibm 26 )
00323     { "\x19" , "\x99" },
00324     { "\x4D" , "\xF0\x4D" },
00325     { "\x4D" , "\xF0\x4D" },
00326   },
00327 
00328   { 
00329     // BX_KEY_Q ( ibm 17 )
00330     { "\x10" , "\x90" },
00331     { "\x15" , "\xF0\x15" },
00332     { "\x15" , "\xF0\x15" },
00333   },
00334 
00335   { 
00336     // BX_KEY_R ( ibm 20 )
00337     { "\x13" , "\x93" },
00338     { "\x2D" , "\xF0\x2D" },
00339     { "\x2D" , "\xF0\x2D" },
00340   },
00341 
00342   { 
00343     // BX_KEY_S ( ibm 32 )
00344     { "\x1F" , "\x9F" },
00345     { "\x1B" , "\xF0\x1B" },
00346     { "\x1B" , "\xF0\x1B" },
00347   },
00348 
00349   { 
00350     // BX_KEY_T ( ibm 21 )
00351     { "\x14" , "\x94" },
00352     { "\x2C" , "\xF0\x2C" },
00353     { "\x2C" , "\xF0\x2C" },
00354   },
00355 
00356   { 
00357     // BX_KEY_U ( ibm 23 )
00358     { "\x16" , "\x96" },
00359     { "\x3C" , "\xF0\x3C" },
00360     { "\x3C" , "\xF0\x3C" },
00361   },
00362 
00363   { 
00364     // BX_KEY_V ( ibm 49 )
00365     { "\x2F" , "\xAF" },
00366     { "\x2A" , "\xF0\x2A" },
00367     { "\x2A" , "\xF0\x2A" },
00368   },
00369 
00370   { 
00371     // BX_KEY_W ( ibm 18 )
00372     { "\x11" , "\x91" },
00373     { "\x1D" , "\xF0\x1D" },
00374     { "\x1D" , "\xF0\x1D" },
00375   },
00376 
00377   { 
00378     // BX_KEY_X ( ibm 47 )
00379     { "\x2D" , "\xAD" },
00380     { "\x22" , "\xF0\x22" },
00381     { "\x22" , "\xF0\x22" },
00382   },
00383 
00384   { 
00385     // BX_KEY_Y ( ibm 22 )
00386     { "\x15" , "\x95" },
00387     { "\x35" , "\xF0\x35" },
00388     { "\x35" , "\xF0\x35" },
00389   },
00390 
00391   { 
00392     // BX_KEY_Z ( ibm 46 )
00393     { "\x2C" , "\xAC" },
00394     { "\x1A" , "\xF0\x1A" },
00395     { "\x1A" , "\xF0\x1A" },
00396   },
00397 
00398   { 
00399     // BX_KEY_0 ( ibm 11 )
00400     { "\x0B" , "\x8B" },
00401     { "\x45" , "\xF0\x45" },
00402     { "\x45" , "\xF0\x45" },
00403   },
00404 
00405   { 
00406     // BX_KEY_1 ( ibm 2 )
00407     { "\x02" , "\x82" },
00408     { "\x16" , "\xF0\x16" },
00409     { "\x16" , "\xF0\x16" },
00410   },
00411 
00412   { 
00413     // BX_KEY_2 ( ibm 3 )
00414     { "\x03" , "\x83" },
00415     { "\x1E" , "\xF0\x1E" },
00416     { "\x1E" , "\xF0\x1E" },
00417   },
00418 
00419   { 
00420     // BX_KEY_3 ( ibm 4 )
00421     { "\x04" , "\x84" },
00422     { "\x26" , "\xF0\x26" },
00423     { "\x26" , "\xF0\x26" },
00424   },
00425 
00426   { 
00427     // BX_KEY_4 ( ibm 5 )
00428     { "\x05" , "\x85" },
00429     { "\x25" , "\xF0\x25" },
00430     { "\x25" , "\xF0\x25" },
00431   },
00432 
00433   { 
00434     // BX_KEY_5 ( ibm 6 )
00435     { "\x06" , "\x86" },
00436     { "\x2E" , "\xF0\x2E" },
00437     { "\x2E" , "\xF0\x2E" },
00438   },
00439 
00440   { 
00441     // BX_KEY_6 ( ibm 7 )
00442     { "\x07" , "\x87" },
00443     { "\x36" , "\xF0\x36" },
00444     { "\x36" , "\xF0\x36" },
00445   },
00446 
00447   { 
00448     // BX_KEY_7 ( ibm 8 )
00449     { "\x08" , "\x88" },
00450     { "\x3D" , "\xF0\x3D" },
00451     { "\x3D" , "\xF0\x3D" },
00452   },
00453 
00454   { 
00455     // BX_KEY_8 ( ibm 9 )
00456     { "\x09" , "\x89" },
00457     { "\x3E" , "\xF0\x3E" },
00458     { "\x3E" , "\xF0\x3E" },
00459   },
00460 
00461   { 
00462     // BX_KEY_9 ( ibm 10 )
00463     { "\x0A" , "\x8A" },
00464     { "\x46" , "\xF0\x46" },
00465     { "\x46" , "\xF0\x46" },
00466   },
00467 
00468   { 
00469     // BX_KEY_ESC ( ibm 110 )
00470     { "\x01" , "\x81" },
00471     { "\x76" , "\xF0\x76" },
00472     { "\x08" , "\xF0\x08" },
00473   },
00474 
00475   { 
00476     // BX_KEY_SPACE ( ibm 61 )
00477     { "\x39" , "\xB9" },
00478     { "\x29" , "\xF0\x29" },
00479     { "\x29" , "\xF0\x29" },
00480   },
00481 
00482   { 
00483     // BX_KEY_SINGLE_QUOTE ( ibm 41 )
00484     { "\x28" , "\xA8" },
00485     { "\x52" , "\xF0\x52" },
00486     { "\x52" , "\xF0\x52" },
00487   },
00488 
00489   { 
00490     // BX_KEY_COMMA ( ibm 53 )
00491     { "\x33" , "\xB3" },
00492     { "\x41" , "\xF0\x41" },
00493     { "\x41" , "\xF0\x41" },
00494   },
00495 
00496   { 
00497     // BX_KEY_PERIOD ( ibm 54 )
00498     { "\x34" , "\xB4" },
00499     { "\x49" , "\xF0\x49" },
00500     { "\x49" , "\xF0\x49" },
00501   },
00502 
00503   { 
00504     // BX_KEY_SLASH ( ibm 55 )
00505     { "\x35" , "\xB5" },
00506     { "\x4A" , "\xF0\x4A" },
00507     { "\x4A" , "\xF0\x4A" },
00508   },
00509 
00510   { 
00511     // BX_KEY_SEMICOLON ( ibm 40 )
00512     { "\x27" , "\xA7" },
00513     { "\x4C" , "\xF0\x4C" },
00514     { "\x4C" , "\xF0\x4C" },
00515   },
00516 
00517   { 
00518     // BX_KEY_EQUALS ( ibm 13 )
00519     { "\x0D" , "\x8D" },
00520     { "\x55" , "\xF0\x55" },
00521     { "\x55" , "\xF0\x55" },
00522   },
00523 
00524   { 
00525     // BX_KEY_LEFT_BRACKET ( ibm 27 )
00526     { "\x1A" , "\x9A" },
00527     { "\x54" , "\xF0\x54" },
00528     { "\x54" , "\xF0\x54" },
00529   },
00530 
00531   { 
00532     // BX_KEY_BACKSLASH ( ibm 42, 29)
00533     { "\x2B" , "\xAB" },
00534     { "\x5D" , "\xF0\x5D" },
00535     { "\x53" , "\xF0\x53" },
00536   },
00537 
00538   { 
00539     // BX_KEY_RIGHT_BRACKET ( ibm 28 )
00540     { "\x1B" , "\x9B" },
00541     { "\x5B" , "\xF0\x5B" },
00542     { "\x5B" , "\xF0\x5B" },
00543   },
00544 
00545   { 
00546     // BX_KEY_MINUS ( ibm 12 )
00547     { "\x0C" , "\x8C" },
00548     { "\x4E" , "\xF0\x4E" },
00549     { "\x4E" , "\xF0\x4E" },
00550   },
00551 
00552   { 
00553     // BX_KEY_GRAVE ( ibm 1 )
00554     { "\x29" , "\xA9" },
00555     { "\x0E" , "\xF0\x0E" },
00556     { "\x0E" , "\xF0\x0E" },
00557   },
00558 
00559   { 
00560     // BX_KEY_BACKSPACE ( ibm 15 )
00561     { "\x0E" , "\x8E" },
00562     { "\x66" , "\xF0\x66" },
00563     { "\x66" , "\xF0\x66" },
00564   },
00565 
00566   { 
00567     // BX_KEY_ENTER ( ibm 43 )
00568     { "\x1C" , "\x9C" },
00569     { "\x5A" , "\xF0\x5A" },
00570     { "\x5A" , "\xF0\x5A" },
00571   },
00572 
00573   { 
00574     // BX_KEY_TAB ( ibm 16 )
00575     { "\x0F" , "\x8F" },
00576     { "\x0D" , "\xF0\x0D" },
00577     { "\x0D" , "\xF0\x0D" },
00578   },
00579 
00580   { 
00581     // BX_KEY_LEFT_BACKSLASH ( ibm 45 )
00582     { "\x56" , "\xD6" },
00583     { "\x61" , "\xF0\x61" },
00584     { "\x13" , "\xF0\x13" },
00585   },
00586 
00587   { 
00588     // BX_KEY_PRINT ( ibm 124 )
00589     { "\xE0\x2A\xE0\x37" , "\xE0\xB7\xE0\xAA" },
00590     { "\xE0\x12\xE0\x7C" , "\xE0\xF0\x7C\xE0\xF0\x12" },
00591       { "\x57" ,     "\xF0\x57" },
00592     },
00593 
00594   { 
00595     // BX_KEY_SCRL_LOCK ( ibm 125 )
00596     { "\x46" , "\xC6" },
00597     { "\x7E" , "\xF0\x7E" },
00598     { "\x5F" , "\xF0\x5F" },
00599   },
00600 
00601   { 
00602     // BX_KEY_PAUSE ( ibm 126 )
00603     { "\xE1\x1D\x45\xE1\x9D\xC5" ,         "" },
00604     { "\xE1\x14\x77\xE1\xF0\x14\xF0\x77" , "" },
00605       { "\x62" ,                             "\xF0\x62" },
00606     },
00607 
00608   { 
00609     // BX_KEY_INSERT ( ibm 75 )
00610     { "\xE0\x52" , "\xE0\xD2" },
00611     { "\xE0\x70" , "\xE0\xF0\x70" },
00612     { "\x67" ,     "\xF0\x67" },
00613     },
00614 
00615   { 
00616     // BX_KEY_DELETE ( ibm 76 )
00617     { "\xE0\x53" , "\xE0\xD3" },
00618     { "\xE0\x71" , "\xE0\xF0\x71" },
00619     { "\x64" ,     "\xF0\x64" },
00620     },
00621 
00622   { 
00623     // BX_KEY_HOME ( ibm 80 )
00624     { "\xE0\x47" , "\xE0\xC7" },
00625     { "\xE0\x6C" , "\xE0\xF0\x6C" },
00626     { "\x6E" ,     "\xF0\x6E" },
00627     },
00628 
00629   { 
00630     // BX_KEY_END ( ibm 81 )
00631     { "\xE0\x4F" , "\xE0\xCF" },
00632     { "\xE0\x69" , "\xE0\xF0\x69" },
00633     { "\x65" ,     "\xF0\x65" },
00634     },
00635 
00636   { 
00637     // BX_KEY_PAGE_UP ( ibm 85 )
00638     { "\xE0\x49" , "\xE0\xC9" },
00639     { "\xE0\x7D" , "\xE0\xF0\x7D" },
00640     { "\x6F" ,     "\xF0\x6F" },
00641     },
00642 
00643   { 
00644     // BX_KEY_PAGE_DOWN ( ibm 86 )
00645     { "\xE0\x51" , "\xE0\xD1" },
00646     { "\xE0\x7A" , "\xE0\xF0\x7A" },
00647     { "\x6D" ,     "\xF0\x6D" },
00648     },
00649 
00650   { 
00651     // BX_KEY_KP_ADD ( ibm 106 )
00652     { "\x4E" , "\xCE" },
00653     { "\x79" , "\xF0\x79" },
00654     { "\x7C" , "\xF0\x7C" },
00655   },
00656 
00657   { 
00658     // BX_KEY_KP_SUBTRACT ( ibm 105 )
00659     { "\x4A" , "\xCA" },
00660     { "\x7B" , "\xF0\x7B" },
00661     { "\x84" , "\xF0\x84" },
00662   },
00663 
00664   { 
00665     // BX_KEY_KP_END ( ibm 93 )
00666     { "\x4F" , "\xCF" },
00667     { "\x69" , "\xF0\x69" },
00668     { "\x69" , "\xF0\x69" },
00669   },
00670 
00671   { 
00672     // BX_KEY_KP_DOWN ( ibm 98 )
00673     { "\x50" , "\xD0" },
00674     { "\x72" , "\xF0\x72" },
00675     { "\x72" , "\xF0\x72" },
00676   },
00677 
00678   { 
00679     // BX_KEY_KP_PAGE_DOWN ( ibm 103 )
00680     { "\x51" , "\xD1" },
00681     { "\x7A" , "\xF0\x7A" },
00682     { "\x7A" , "\xF0\x7A" },
00683   },
00684 
00685   { 
00686     // BX_KEY_KP_LEFT ( ibm 92 )
00687     { "\x4B" , "\xCB" },
00688     { "\x6B" , "\xF0\x6B" },
00689     { "\x6B" , "\xF0\x6B" },
00690   },
00691 
00692   { 
00693     // BX_KEY_KP_RIGHT ( ibm 102 )
00694     { "\x4D" , "\xCD" },
00695     { "\x74" , "\xF0\x74" },
00696     { "\x74" , "\xF0\x74" },
00697   },
00698 
00699   { 
00700     // BX_KEY_KP_HOME ( ibm 91 )
00701     { "\x47" , "\xC7" },
00702     { "\x6C" , "\xF0\x6C" },
00703     { "\x6C" , "\xF0\x6C" },
00704   },
00705 
00706   { 
00707     // BX_KEY_KP_UP ( ibm 96 )
00708     { "\x48" , "\xC8" },
00709     { "\x75" , "\xF0\x75" },
00710     { "\x75" , "\xF0\x75" },
00711   },
00712 
00713   { 
00714     // BX_KEY_KP_PAGE_UP ( ibm 101 )
00715     { "\x49" , "\xC9" },
00716     { "\x7D" , "\xF0\x7D" },
00717     { "\x7D" , "\xF0\x7D" },
00718   },
00719 
00720   { 
00721     // BX_KEY_KP_INSERT ( ibm 99 )
00722     { "\x52" , "\xD2" },
00723     { "\x70" , "\xF0\x70" },
00724     { "\x70" , "\xF0\x70" },
00725   },
00726 
00727   { 
00728     // BX_KEY_KP_DELETE ( ibm 104 )
00729     { "\x53" , "\xD3" },
00730     { "\x71" , "\xF0\x71" },
00731     { "\x71" , "\xF0\x71" },
00732   },
00733 
00734   { 
00735     // BX_KEY_KP_5 ( ibm 97 )
00736     { "\x4C" , "\xCC" },
00737     { "\x73" , "\xF0\x73" },
00738     { "\x73" , "\xF0\x73" },
00739   },
00740 
00741   { 
00742     // BX_KEY_UP ( ibm 83 )
00743     { "\xE0\x48" , "\xE0\xC8" },
00744     { "\xE0\x75" , "\xE0\xF0\x75" },
00745     { "\x63" ,     "\xF0\x63" },
00746     },
00747 
00748   { 
00749     // BX_KEY_DOWN ( ibm 84 )
00750     { "\xE0\x50" , "\xE0\xD0" },
00751     { "\xE0\x72" , "\xE0\xF0\x72" },
00752     { "\x60" ,     "\xF0\x60" },
00753     },
00754 
00755   { 
00756     // BX_KEY_LEFT ( ibm 79 )
00757     { "\xE0\x4B" , "\xE0\xCB" },
00758     { "\xE0\x6B" , "\xE0\xF0\x6B" },
00759     { "\x61" ,     "\xF0\x61" },
00760     },
00761 
00762   { 
00763     // BX_KEY_RIGHT ( ibm 89 )
00764     { "\xE0\x4D" , "\xE0\xCD" },
00765     { "\xE0\x74" , "\xE0\xF0\x74" },
00766     { "\x6A" ,     "\xF0\x6A" },
00767     },
00768 
00769   { 
00770     // BX_KEY_KP_ENTER ( ibm 108 )
00771     { "\xE0\x1C" , "\xE0\x9C" },
00772     { "\xE0\x5A" , "\xE0\xF0\x5A" },
00773     { "\x79" ,     "\xF0\x79" },
00774     },
00775 
00776   { 
00777     // BX_KEY_KP_MULTIPLY ( ibm 100 )
00778     { "\x37" , "\xB7" },
00779     { "\x7C" , "\xF0\x7C" },
00780     { "\x7E" , "\xF0\x7E" },
00781   },
00782 
00783   { 
00784     // BX_KEY_KP_DIVIDE ( ibm 95 )
00785     { "\xE0\x35" , "\xE0\xB5" },
00786     { "\xE0\x4A" , "\xE0\xF0\x4A" },
00787     { "\x77" ,     "\xF0\x77" },
00788     },
00789 
00790   { 
00791     // BX_KEY_WIN_L
00792     { "\xE0\x5B" , "\xE0\xDB" },
00793     { "\xE0\x1F" , "\xE0\xF0\x1F" },
00794     { "\x8B" ,     "\xF0\x8B" },
00795     },
00796 
00797   { 
00798     // BX_KEY_WIN_R
00799     { "\xE0\x5C" , "\xE0\xDC" },
00800     { "\xE0\x27" , "\xE0\xF0\x27" },
00801     { "\x8C" ,     "\xF0\x8C" },
00802     },
00803 
00804   { 
00805     // BX_KEY_MENU
00806     { "\xE0\x5D" , "\xE0\xDD" },
00807     { "\xE0\x2F" , "\xE0\xF0\x2F" },
00808     { "\x8D" ,     "\xF0\x8D" },
00809     },
00810 
00811   { 
00812     // BX_KEY_ALT_SYSREQ
00813     { "\x54" ,   "\xD4" },
00814     { "\x84" ,   "\xF0\x84" },
00815     { "\x57" ,   "\xF0\x57" },
00816   },
00817 
00818   { 
00819     // BX_KEY_CTRL_BREAK
00820     { "\xE0\x46" , "\xE0\xC6" },
00821     { "\xE0\x7E" , "\xE0\xF0\x7E" },
00822     { "\x62" ,     "\xF0\x62" },
00823     },
00824 
00825   { 
00826     // BX_KEY_INT_BACK
00827     { "\xE0\x6A" , "\xE0\xEA" },
00828     { "\xE0\x38" , "\xE0\xF0\x38" },
00829     { "\x38" ,     "\xF0\x38" },
00830     },
00831 
00832   { 
00833     // BX_KEY_INT_FORWARD
00834     { "\xE0\x69" , "\xE0\xE9" },
00835     { "\xE0\x30" , "\xE0\xF0\x30" },
00836     { "\x30" ,     "\xF0\x30" },
00837     },
00838 
00839   { 
00840     // BX_KEY_INT_STOP
00841     { "\xE0\x68" , "\xE0\xE8" },
00842     { "\xE0\x28" , "\xE0\xF0\x28" },
00843     { "\x28" ,     "\xF0\x28" },
00844     },
00845 
00846   { 
00847     // BX_KEY_INT_MAIL
00848     { "\xE0\x6C" , "\xE0\xEC" },
00849     { "\xE0\x48" , "\xE0\xF0\x48" },
00850     { "\x48" ,     "\xF0\x48" },
00851     },
00852 
00853   { 
00854     // BX_KEY_INT_SEARCH
00855     { "\xE0\x65" , "\xE0\xE5" },
00856     { "\xE0\x10" , "\xE0\xF0\x10" },
00857     { "\x10" ,     "\xF0\x10" },
00858     },
00859 
00860   { 
00861     // BX_KEY_INT_FAV
00862     { "\xE0\x66" , "\xE0\xE6" },
00863     { "\xE0\x18" , "\xE0\xF0\x18" },
00864     { "\x18" ,     "\xF0\x18" },
00865     },
00866 
00867   { 
00868     // BX_KEY_INT_HOME
00869     { "\xE0\x32" , "\xE0\xB2" },
00870     { "\xE0\x3A" , "\xE0\xF0\x3A" },
00871     { "\x97" ,     "\xF0\x97" },
00872     },
00873 
00874   { 
00875     // BX_KEY_POWER_MYCOMP
00876     { "\xE0\x6B" , "\xE0\xEB" },
00877     { "\xE0\x40" , "\xE0\xF0\x40" },
00878     { "\x40" ,     "\xF0\x40" },
00879     },
00880 
00881   { 
00882     // BX_KEY_POWER_CALC
00883     { "\xE0\x21" , "\xE0\xA1" },
00884     { "\xE0\x2B" , "\xE0\xF0\x2B" },
00885     { "\x99" ,     "\xF0\x99" },
00886     },
00887 
00888   { 
00889     // BX_KEY_POWER_SLEEP
00890     { "\xE0\x5F" , "\xE0\xDF" },
00891     { "\xE0\x3F" , "\xE0\xF0\x3F" },
00892     { "\x7F" ,     "\xF0\x7F" },
00893     },
00894 
00895   { 
00896     // BX_KEY_POWER_POWER
00897     { "\xE0\x5E" , "\xE0\xDE" },
00898     { "\xE0\x37" , "\xE0\xF0\x37" },
00899     { "" ,         "" },
00900   },
00901 
00902   { 
00903     // BX_KEY_POWER_WAKE
00904     { "\xE0\x63" , "\xE0\xE3" },
00905     { "\xE0\x5E" , "\xE0\xF0\x5E" },
00906     { "" ,         "" },
00907   },
00908 
00909 };

SourceForge.net Logo
Project space on SourceForge.net