Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

kbdnec95.c

Go to the documentation of this file.
00001 #if defined(JAPAN) && defined(_PC98_) 00002 /***************************************************************************\ 00003 * Module Name: kbdnec95.c 00004 * 00005 * Copyright (c) 1985-97, NEC Corporation 00006 * 00007 * History: 00008 \***************************************************************************/ 00009 #else // _PC98_ 00010 /***************************************************************************\ 00011 * Module Name: kbd106.c 00012 * 00013 * Copyright (c) 1985-92, Microsoft Corporation 00014 * 00015 * History: 00016 \***************************************************************************/ 00017 #endif // _PC98_ 00018 00019 #include <windows.h> 00020 #include <ime.h> 00021 #include "vkoem.h" 00022 #include "kbdjpn.h" 00023 #if defined(JAPAN) && defined(_PC98_) 00024 #include "kbdnec95.h" 00025 #else // _PC98_ 00026 #include "kbd106.h" 00027 #endif // _PC98_ 00028 00029 #if defined(_M_IA64) 00030 #pragma section(".data") 00031 #define ALLOC_SECTION_LDATA __declspec(allocate(".data")) 00032 #else 00033 #pragma data_seg(".data") 00034 #define ALLOC_SECTION_LDATA 00035 #endif 00036 00037 #if defined(JAPAN) && defined(_PC98_) 00038 /***************************************************************************\ 00039 * ausVK[] - Virtual Scan Code to Virtual Key conversion table for NEC 106 00040 \***************************************************************************/ 00041 #else // _PC98_ 00042 /***************************************************************************\ 00043 * ausVK[] - Virtual Scan Code to Virtual Key conversion table for 106 00044 \***************************************************************************/ 00045 #endif // _PC98_ 00046 00047 static ALLOC_SECTION_LDATA USHORT ausVK[] = { 00048 T00, T01, T02, T03, T04, T05, T06, T07, 00049 T08, T09, T0A, T0B, T0C, T0D, T0E, T0F, 00050 T10, T11, T12, T13, T14, T15, T16, T17, 00051 T18, T19, T1A, T1B, T1C, T1D, T1E, T1F, 00052 T20, T21, T22, T23, T24, T25, T26, T27, 00053 #if defined(JAPAN) && defined(_PC98_) 00054 T28, T29, T2A, T2B, T2C, T2D, T2E, T2F, 00055 T30, T31, T32, T33, T34, 00056 00057 /* 00058 * Conversion key must have KBDSPECIAL bit set (NLS key) 00059 */ 00060 T35 | KBDSPECIAL, 00061 #else // _PC98_ 00062 T28, 00063 00064 /* 00065 * Hankaku/Zenkaku/Kanji key must have KBDSPECIAL bit set (NLS key) 00066 */ 00067 T29 | KBDSPECIAL, 00068 00069 T2A, T2B, T2C, T2D, T2E, T2F, 00070 T30, T31, T32, T33, T34, T35, 00071 #endif // _PC98_ 00072 00073 #if defined(JAPAN) && defined(_PC98_) 00074 T36, T37, 00075 #else //_PC98_ 00076 /* 00077 * Right-hand Shift key must have KBDEXT bit set. 00078 */ 00079 T36 | KBDEXT, 00080 00081 /* 00082 * numpad_* + Shift/Alt -> SnapShot 00083 */ 00084 T37 | KBDMULTIVK, 00085 #endif // _PC98_ 00086 00087 T38, T39, 00088 00089 #if defined(JAPAN) && defined(_PC98_) 00090 T3A, 00091 #else //_PC98_ 00092 /* 00093 * Alphanumeric/CapsLock key must have KBDSPECIAL bit set (NLS key) 00094 */ 00095 T3A | KBDSPECIAL, 00096 #endif // _PC98_ 00097 00098 T3B, T3C, T3D, T3E, T3F, 00099 00100 #if defined(JAPAN) && defined(_PC98_) 00101 /* 00102 * Number Pad keys: 00103 * KBDNUMPAD - digits 0-9 and decimal point. 00104 * KBDSPECIAL - require special processing by Windows 00105 */ 00106 00107 T40, // Numpad - 00108 T41, // Numpad / 00109 T42 | KBDNUMPAD | KBDSPECIAL, // Numpad 7 (Home) 00110 T43 | KBDNUMPAD | KBDSPECIAL, // Numpad 8 (Up) 00111 T44 | KBDNUMPAD | KBDSPECIAL, // Numpad 9 (PgUp) 00112 T45, // Numpad * 00113 T46 | KBDNUMPAD | KBDSPECIAL, // Numpad 4 (Left) 00114 T47 | KBDNUMPAD | KBDSPECIAL, // Numpad 5 (Clear) 00115 T48 | KBDNUMPAD | KBDSPECIAL, // Numpad 6 (Right) 00116 T49, // Numpad + 00117 T4A | KBDNUMPAD | KBDSPECIAL, // Numpad 1 (End) 00118 T4B | KBDNUMPAD | KBDSPECIAL, // Numpad 2 (Down) 00119 T4C | KBDNUMPAD | KBDSPECIAL, // Numpad 3 (PgDn) 00120 T4D | KBDNUMPAD | KBDSPECIAL, // Numpad = 00121 T4E | KBDNUMPAD | KBDSPECIAL, // Numpad 0 (Ins) 00122 T4F, // Numpad , 00123 T50 | KBDNUMPAD | KBDSPECIAL, // Numpad . (Del) 00124 00125 /* 00126 * Non-Conversion key must have KBDSPECIAL bit set (NLS key) 00127 */ 00128 T51 | KBDSPECIAL, 00129 00130 T52, T53, 00131 #else //_PC98_ 00132 T40, T41, T42, T43, T44, 00133 00134 /* 00135 * NumLock Key: 00136 * KBDEXT - VK_NUMLOCK is an Extended key 00137 * KBDMULTIVK - VK_NUMLOCK or VK_PAUSE (without or with CTRL) 00138 */ 00139 T45 | KBDEXT | KBDMULTIVK, 00140 00141 T46 | KBDMULTIVK, 00142 00143 /* 00144 * Number Pad keys: 00145 * KBDNUMPAD - digits 0-9 and decimal point. 00146 * KBDSPECIAL - require special processing by Windows 00147 */ 00148 T47 | KBDNUMPAD | KBDSPECIAL, // Numpad 7 (Home) 00149 T48 | KBDNUMPAD | KBDSPECIAL, // Numpad 8 (Up), 00150 T49 | KBDNUMPAD | KBDSPECIAL, // Numpad 9 (PgUp), 00151 T4A, 00152 T4B | KBDNUMPAD | KBDSPECIAL, // Numpad 4 (Left), 00153 T4C | KBDNUMPAD | KBDSPECIAL, // Numpad 5 (Clear), 00154 T4D | KBDNUMPAD | KBDSPECIAL, // Numpad 6 (Right), 00155 T4E, 00156 T4F | KBDNUMPAD | KBDSPECIAL, // Numpad 1 (End), 00157 T50 | KBDNUMPAD | KBDSPECIAL, // Numpad 2 (Down), 00158 T51 | KBDNUMPAD | KBDSPECIAL, // Numpad 3 (PgDn), 00159 T52 | KBDNUMPAD | KBDSPECIAL, // Numpad 0 (Ins), 00160 T53 | KBDNUMPAD | KBDSPECIAL, // Numpad . (Del), 00161 #endif // _PC98_ 00162 00163 T54, T55, T56, T57, T58, T59, T5A, T5B, 00164 T5C, T5D, T5E, T5F, T60, T61, T62, T63, 00165 T64, T65, T66, T67, T68, T69, T6A, T6B, 00166 T6C, T6D, T6E, T6F, 00167 00168 #if defined(JAPAN) && defined(_PC98_) 00169 T70, 00170 #else //_PC98_ 00171 /* 00172 * Hiragana/Katakana/Roman key must have KBDSPECIAL bit set (NLS key) 00173 */ 00174 T70 | KBDSPECIAL, 00175 #endif // _PC98_ 00176 00177 T71, T72, T73, 00178 T74, T75, T76, T77, T78, 00179 00180 #if defined(JAPAN) && defined(_PC98_) 00181 T79, 00182 #else //_PC98_ 00183 /* 00184 * Conversion key must have KBDSPECIAL bit set (NLS key) 00185 */ 00186 T79 | KBDSPECIAL, 00187 #endif // _PC98_ 00188 00189 T7A, 00190 00191 #if defined(JAPAN) && defined(_PC98_) 00192 T7B, 00193 #else //_PC98_ 00194 /* 00195 * Non-Conversion key must have KBDSPECIAL bit set (NLS key) 00196 */ 00197 T7B | KBDSPECIAL, 00198 #endif // _PC98_ 00199 00200 T7C, T7D, T7E, T7F 00201 00202 }; 00203 00204 static ALLOC_SECTION_LDATA VSC_VK aE0VscToVk[] = { 00205 #if defined(JAPAN) && defined(_PC98_) 00206 #else //_PC98_ 00207 { 0x1C, X1C | KBDEXT }, // Numpad Enter 00208 { 0x1D, X1D | KBDEXT }, // RControl 00209 { 0x35, X35 | KBDEXT }, // Numpad Divide 00210 { 0x37, X37 | KBDEXT }, // Snapshot 00211 { 0x38, X38 | KBDEXT }, // RMenu 00212 { 0x46, X46 | KBDEXT }, // Break (Ctrl + Pause) 00213 { 0x47, X47 | KBDEXT }, // Home 00214 { 0x48, X48 | KBDEXT }, // Up 00215 { 0x49, X49 | KBDEXT }, // Prior 00216 { 0x4B, X4B | KBDEXT }, // Left 00217 { 0x4D, X4D | KBDEXT }, // Right 00218 { 0x4F, X4F | KBDEXT }, // End 00219 { 0x50, X50 | KBDEXT }, // Down 00220 { 0x51, X51 | KBDEXT }, // Next 00221 { 0x52, X52 | KBDEXT }, // Insert 00222 { 0x53, X53 | KBDEXT }, // Delete 00223 { 0x5B, X5B | KBDEXT }, // Left Win 00224 { 0x5C, X5C | KBDEXT }, // Right Win 00225 { 0x5D, X5D | KBDEXT }, // Application 00226 #endif // _PC98_ 00227 { 0, 0 } 00228 }; 00229 00230 static ALLOC_SECTION_LDATA VSC_VK aE1VscToVk[] = { 00231 #if defined(JAPAN) && defined(_PC98_) 00232 #else //_PC98_ 00233 { 0x1D, Y1D }, // Pause 00234 #endif // _PC98_ 00235 { 0 , 0 } 00236 }; 00237 00238 /***************************************************************************\ 00239 * aVkToBits[] - map Virtual Keys to Modifier Bits 00240 * 00241 * See kbd.h for a full description. 00242 * 00243 * US Keyboard has only three shifter keys: 00244 * SHIFT (L & R) affects alphabnumeric keys, 00245 * CTRL (L & R) is used to generate control characters 00246 * ALT (L & R) used for generating characters by number with numpad 00247 \***************************************************************************/ 00248 00249 static ALLOC_SECTION_LDATA VK_TO_BIT aVkToBits[] = { 00250 { VK_SHIFT, KBDSHIFT }, 00251 { VK_CONTROL, KBDCTRL }, 00252 { VK_MENU, KBDALT }, 00253 { VK_KANA, KBDKANA }, 00254 { 0, 0 } 00255 }; 00256 00257 /***************************************************************************\ 00258 * aModification[] - map character modifier bits to modification number 00259 * 00260 * See kbd.h for a full description. 00261 * 00262 \***************************************************************************/ 00263 00264 static ALLOC_SECTION_LDATA MODIFIERS CharModifiers = { 00265 &aVkToBits[0], 00266 11, 00267 { 00268 // Modification# // Keys Pressed : Explanation 00269 // ============= // ============== : ============================= 00270 0, // : unshifted characters 00271 1, // SHIFT : capitals, ~!@#$%^&*()_+{}:"<>? etc. 00272 4, // CTRL : control characters 00273 6, // CTRL SHIFT : 00274 SHFT_INVALID, // ALT : invalid 00275 SHFT_INVALID, // ALT SHIFT : invalid 00276 SHFT_INVALID, // ALT CTRL : invalid 00277 SHFT_INVALID, // ALT CTRL SHIFT : invalid 00278 2, //KANA 00279 3, //KANA SHIFT 00280 5, //KANA CTRL 00281 7 //KANA CTRL SHIFT 00282 } 00283 }; 00284 00285 /***************************************************************************\ 00286 * 00287 * aVkToWch2[] - Virtual Key to WCHAR translation for 2 shift states 00288 * aVkToWch3[] - Virtual Key to WCHAR translation for 3 shift states 00289 * aVkToWch4[] - Virtual Key to WCHAR translation for 4 shift states 00290 * 00291 * Table attributes: Unordered Scan, null-terminated 00292 * 00293 * Search this table for an entry with a matching Virtual Key to find the 00294 * corresponding unshifted and shifted WCHAR characters. 00295 * 00296 * Reserved VirtualKey values (first column) 00297 * -1 - this line contains dead characters (diacritic) 00298 * 0 - terminator 00299 * 00300 * Reserved Attribute values (second column) 00301 * CAPLOK - CapsLock affects this key like Shift 00302 * KANALOK - The KANA-LOCK key affects this key like KANA 00303 * 00304 * Reserved character values (third through last column) 00305 * WCH_NONE - No character 00306 * WCH_DEAD - Dead character (diacritic) value is in next line 00307 * 00308 \***************************************************************************/ 00309 00310 static ALLOC_SECTION_LDATA VK_TO_WCHARS4 aVkToWch4[] = { 00311 // | | SHIFT | KANA | K+SHFT | 00312 // | |==========|========|========| 00313 #if defined(JAPAN) && defined(_PC98_) 00314 {'0' , KANALOK ,'0' ,'0' ,WCH_WA ,WCH_WO }, //_PC98_ 00315 #else //_PC98_ 00316 {'0' , KANALOK ,'0' ,WCH_NONE ,WCH_WA ,WCH_WO }, 00317 #endif // _PC98_ 00318 {'1' , KANALOK ,'1' ,'!' ,WCH_NU ,WCH_NU }, 00319 {'3' , KANALOK ,'3' ,'#' ,WCH_A ,WCH_AA }, 00320 {'4' , KANALOK ,'4' ,'$' ,WCH_U ,WCH_UU }, 00321 {'5' , KANALOK ,'5' ,'%' ,WCH_E ,WCH_EE }, 00322 {'7' , KANALOK ,'7' ,0x27 ,WCH_YA ,WCH_YAA }, 00323 {'8' , KANALOK ,'8' ,'(' ,WCH_YU ,WCH_YUU }, 00324 {'9' , KANALOK ,'9' ,')' ,WCH_YO ,WCH_YOO }, 00325 {'A' , CAPLOK | KANALOK ,'a' ,'A' ,WCH_TI ,WCH_TI }, 00326 {'B' , CAPLOK | KANALOK ,'b' ,'B' ,WCH_KO ,WCH_KO }, 00327 {'C' , CAPLOK | KANALOK ,'c' ,'C' ,WCH_SO ,WCH_SO }, 00328 {'D' , CAPLOK | KANALOK ,'d' ,'D' ,WCH_SI ,WCH_SI }, 00329 {'E' , CAPLOK | KANALOK ,'e' ,'E' ,WCH_I ,WCH_II }, 00330 {'F' , CAPLOK | KANALOK ,'f' ,'F' ,WCH_HA ,WCH_HA }, 00331 {'G' , CAPLOK | KANALOK ,'g' ,'G' ,WCH_KI ,WCH_KI }, 00332 {'H' , CAPLOK | KANALOK ,'h' ,'H' ,WCH_KU ,WCH_KU }, 00333 {'I' , CAPLOK | KANALOK ,'i' ,'I' ,WCH_NI ,WCH_NI }, 00334 {'J' , CAPLOK | KANALOK ,'j' ,'J' ,WCH_MA ,WCH_MA }, 00335 {'K' , CAPLOK | KANALOK ,'k' ,'K' ,WCH_NO ,WCH_NO }, 00336 {'L' , CAPLOK | KANALOK ,'l' ,'L' ,WCH_RI ,WCH_RI }, 00337 {'M' , CAPLOK | KANALOK ,'m' ,'M' ,WCH_MO ,WCH_MO }, 00338 {'N' , CAPLOK | KANALOK ,'n' ,'N' ,WCH_MI ,WCH_MI }, 00339 {'O' , CAPLOK | KANALOK ,'o' ,'O' ,WCH_RA ,WCH_RA }, 00340 {'P' , CAPLOK | KANALOK ,'p' ,'P' ,WCH_SE ,WCH_SE }, 00341 {'Q' , CAPLOK | KANALOK ,'q' ,'Q' ,WCH_TA ,WCH_TA }, 00342 {'R' , CAPLOK | KANALOK ,'r' ,'R' ,WCH_SU ,WCH_SU }, 00343 {'S' , CAPLOK | KANALOK ,'s' ,'S' ,WCH_TO ,WCH_TO }, 00344 {'T' , CAPLOK | KANALOK ,'t' ,'T' ,WCH_KA ,WCH_KA }, 00345 {'U' , CAPLOK | KANALOK ,'u' ,'U' ,WCH_NA ,WCH_NA }, 00346 {'V' , CAPLOK | KANALOK ,'v' ,'V' ,WCH_HI ,WCH_HI }, 00347 {'W' , CAPLOK | KANALOK ,'w' ,'W' ,WCH_TE ,WCH_TE }, 00348 {'X' , CAPLOK | KANALOK ,'x' ,'X' ,WCH_SA ,WCH_SA }, 00349 {'Y' , CAPLOK | KANALOK ,'y' ,'Y' ,WCH_NN ,WCH_NN }, 00350 {'Z' , CAPLOK | KANALOK ,'z' ,'Z' ,WCH_TU ,WCH_TUU }, 00351 {VK_OEM_1 , KANALOK ,':' ,'*' ,WCH_KE ,WCH_KE }, 00352 {VK_OEM_2 , KANALOK ,'/' ,'?' ,WCH_ME ,WCH_MD }, 00353 #if defined(JAPAN) && defined(_PC98_) 00354 #else //_PC98_ 00355 {VK_OEM_3 , KANALOK ,'@' ,'`' ,WCH_VS ,WCH_VS }, 00356 {VK_OEM_7 , KANALOK ,'^' ,'~' ,WCH_HE ,WCH_HE }, 00357 {VK_OEM_8 , 0 ,WCH_NONE ,WCH_NONE ,WCH_NONE,WCH_NONE}, 00358 #endif // _PC98_ 00359 {VK_OEM_COMMA , KANALOK ,',' ,'<' ,WCH_NE ,WCH_IC }, 00360 {VK_OEM_PERIOD, KANALOK ,'.' ,'>' ,WCH_RU ,WCH_IP }, 00361 {VK_OEM_PLUS , KANALOK ,';' ,'+' ,WCH_RE ,WCH_RE }, 00362 {VK_TAB , 0 ,'\t' ,'\t' ,'\t' ,'\t' }, 00363 {VK_ADD , 0 ,'+' ,'+' ,'+' ,'+' }, 00364 {VK_DECIMAL , 0 ,'.' ,'.' ,'.' ,'.' }, 00365 {VK_DIVIDE , 0 ,'/' ,'/' ,'/' ,'/' }, 00366 {VK_MULTIPLY , 0 ,'*' ,'*' ,'*' ,'*' }, 00367 {VK_SUBTRACT , 0 ,'-' ,'-' ,'-' ,'-' }, 00368 #if defined(JAPAN) && defined(_PC98_) 00369 {VK_SEPARATOR , 0 ,',' ,',' ,',' ,',' }, //<NEC_OCDE OEM 00370 {VK_OEM_NEC_EQUAL, 0 ,'=' ,'=' ,'=' ,'=' }, //<_PC98_ OEM 00371 #endif // _PC98_ 00372 {0 , 0 ,0 ,0 ,0 ,0 } 00373 }; 00374 00375 static ALLOC_SECTION_LDATA VK_TO_WCHARS6 aVkToWch6[] = { 00376 // | | SHIFT | KANA | K+SHFT | CONTROL | K+CTRL | 00377 // | |==========|========|========|===========|===========| 00378 {VK_BACK , 0 ,'\b' ,'\b' ,'\b' ,'\b' , 0x7f , 0x7f }, 00379 {VK_CANCEL , 0 ,0x03 ,0x03 ,0x03 ,0x03 , 0x03 , 0x03 }, 00380 {VK_ESCAPE , 0 ,0x1b ,0x1b ,0x1b ,0x1b , 0x1b , 0x1b }, 00381 #if defined(JAPAN) && defined(_PC98_) 00382 {VK_OEM_3 , KANALOK ,'@' ,'~' ,WCH_VS ,WCH_VS , 0x00 , 0x00 },//_PC98_ #931208 00383 {VK_OEM_4 , KANALOK ,'[' ,'{' ,WCH_SVS ,WCH_OB , 0x1b , 0x1b },//_PC98_ 00384 {VK_OEM_5 , KANALOK ,'\\' ,'|' ,WCH_PS ,WCH_PS , 0x1c , 0x1c },//_PC98_ 00385 {VK_OEM_6 , KANALOK ,']' ,'}' ,WCH_MU ,WCH_CB , 0x1d , 0x1d },//_PC98_ 00386 {VK_OEM_7 , KANALOK ,'^' ,'`' ,WCH_HE ,WCH_HE , 0x1e , 0x1e },//_PC98_ #931208 00387 {VK_OEM_8 , KANALOK ,WCH_NONE ,'_' ,WCH_RO ,WCH_RO , 0x1f , 0x1f },//_PC98_ #931208 00388 #else //_PC98_ 00389 {VK_OEM_4 , KANALOK ,'[' ,'{' ,WCH_SVS ,WCH_OB , 0x1b , 0x1b }, 00390 {VK_OEM_5 , KANALOK ,'\\' ,'|' ,WCH_PS ,WCH_PS , 0x1c , 0x1c }, 00391 {VK_OEM_102 , KANALOK ,'\\' ,'_' ,WCH_RO ,WCH_RO , 0x1c , 0x1c }, 00392 {VK_OEM_6 , KANALOK ,']' ,'}' ,WCH_MU ,WCH_CB , 0x1d , 0x1d }, 00393 #endif // _PC98_ 00394 {VK_RETURN , 0 ,'\r' ,'\r' ,'\r' ,'\r' , '\n' , '\n' }, 00395 {VK_SPACE , 0 ,' ' ,' ' ,' ' ,' ' , 0x20 , 0x20 }, 00396 {0 , 0 ,0 ,0 ,0 ,0 , 0 , 0 } 00397 }; 00398 00399 static ALLOC_SECTION_LDATA VK_TO_WCHARS8 aVkToWch8[] = { 00400 // | | SHIFT | KANA | K+SHFT | CONTROL | K+CTRL | SHFT+CTRL |K+SHFT+CTRL| 00401 // | |==========|========|========|===========|===========|===========|===========| 00402 {'2' , KANALOK ,'2' ,'"' ,WCH_HU ,WCH_HU , WCH_NONE , WCH_NONE , 0x00 , 0x00 }, 00403 {'6' , KANALOK ,'6' ,'&' ,WCH_O ,WCH_OO , WCH_NONE , WCH_NONE , 0x1e , 0x1e }, 00404 {VK_OEM_MINUS , KANALOK ,'-' ,'=' ,WCH_HO ,WCH_HO , WCH_NONE , WCH_NONE , 0x1f , 0x1f }, 00405 {0 , 0 ,0 ,0 ,0 ,0 , 0 , 0 , 0 , 0 } 00406 }; 00407 00408 // Put this last so that VkKeyScan interprets number characters 00409 // as coming from the main section of the kbd (aVkToWch2 and 00410 // aVkToWch4) before considering the numpad (aVkToWch1). 00411 00412 static ALLOC_SECTION_LDATA VK_TO_WCHARS4 aVkToWch1[] = { 00413 // | | SHIFT | KANA | K+SHFT | 00414 // | |==========|========|========| 00415 { VK_NUMPAD0 , 0 , '0' , WCH_NONE , '0' ,WCH_NONE}, 00416 { VK_NUMPAD1 , 0 , '1' , WCH_NONE , '1' ,WCH_NONE}, 00417 { VK_NUMPAD2 , 0 , '2' , WCH_NONE , '2' ,WCH_NONE}, 00418 { VK_NUMPAD3 , 0 , '3' , WCH_NONE , '3' ,WCH_NONE}, 00419 { VK_NUMPAD4 , 0 , '4' , WCH_NONE , '4' ,WCH_NONE}, 00420 { VK_NUMPAD5 , 0 , '5' , WCH_NONE , '5' ,WCH_NONE}, 00421 { VK_NUMPAD6 , 0 , '6' , WCH_NONE , '6' ,WCH_NONE}, 00422 { VK_NUMPAD7 , 0 , '7' , WCH_NONE , '7' ,WCH_NONE}, 00423 { VK_NUMPAD8 , 0 , '8' , WCH_NONE , '8' ,WCH_NONE}, 00424 { VK_NUMPAD9 , 0 , '9' , WCH_NONE , '9' ,WCH_NONE}, 00425 { 0 , 0 , '\0' , 0 , 0 ,0 } //null terminator 00426 }; 00427 00428 /***************************************************************************\ 00429 * aVkToWcharTable: table of pointers to Character Tables 00430 * 00431 * Describes the character tables and the order they should be searched. 00432 * 00433 * Note: the order determines the behavior of VkKeyScan() : this function 00434 * takes a character and attempts to find a Virtual Key and character- 00435 * modifier key combination that produces that character. The table 00436 * containing the numeric keypad (aVkToWch1) must appear last so that 00437 * VkKeyScan('0') will be interpreted as one of keys from the main 00438 * section, not the numpad. etc. 00439 \***************************************************************************/ 00440 00441 static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE aVkToWcharTable[] = { 00442 { (PVK_TO_WCHARS1)aVkToWch6, 6, sizeof(aVkToWch6[0]) }, 00443 { (PVK_TO_WCHARS1)aVkToWch8, 8, sizeof(aVkToWch8[0]) }, 00444 { (PVK_TO_WCHARS1)aVkToWch4, 4, sizeof(aVkToWch4[0]) }, 00445 { (PVK_TO_WCHARS1)aVkToWch1, 4, sizeof(aVkToWch1[0]) }, // must come last 00446 { NULL, 0, 0 } 00447 }; 00448 00449 /***************************************************************************\ 00450 * aKeyNames[], aKeyNamesExt[] - Scan Code -> Key Name tables 00451 * 00452 * For the GetKeyNameText() API function 00453 * 00454 * Tables for non-extended and extended (KBDEXT) keys. 00455 * (Keys producing printable characters are named by the character itself) 00456 \***************************************************************************/ 00457 00458 static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNames[] = { 00459 #if defined(JAPAN) && defined(_PC98_) 00460 // 0x00, L"ESC", // Esc 00461 0x0e, L"BS", // Backspace 00462 0x0f, L"TAB", // Tab 00463 0x1c, L"RETURN", // Enter 00464 0x34, L"SPACE", // Space 00465 0x35, L"XFER", // NLS Key SZ_KEY_NAME_HIRAGANA 00466 0x36, L"ROLL UP", // Page Down 00467 0x37, L"ROLL DOWN", // Page Up 00468 0x38, L"INS", // Insert 00469 0x39, L"DEL", // Delete 00470 0x3A, L"UP", // Up 00471 0x3B, L"LEFT", // Left 00472 0x3C, L"RIGHT", // Right 00473 0x3D, L"DOWN", // Down 00474 0x3E, L"CLR", // Home 00475 0x3F, L"HELP", // End 00476 0x40, L"Num -", 00477 0x41, L"Num /", 00478 0x42, L"Num 7", 00479 0x43, L"Num 8", 00480 0x44, L"Num 9", 00481 0x45, L"Num *", 00482 0x46, L"Num 4", 00483 0x47, L"Num 5", 00484 0x48, L"Num 6", 00485 0x49, L"Num +", 00486 0x4a, L"Num 1", 00487 0x4b, L"Num 2", 00488 0x4c, L"Num 3", 00489 0x4d, L"Num =", 00490 0x4e, L"Num 0", 00491 0x4f, L"Num ,", 00492 0x50, L"Num .", 00493 0x51, L"NFER", // 00494 0x52, (LPWSTR)SZ_KEY_NAME_F11, // vf1 00495 0x53, (LPWSTR)SZ_KEY_NAME_F12, // vf2 00496 0x54, (LPWSTR)SZ_KEY_NAME_F13, // vf3 00497 0x55, (LPWSTR)SZ_KEY_NAME_F14, // vf4 00498 0x56, (LPWSTR)SZ_KEY_NAME_F15, // vf5 00499 0x60, L"STOP", // Break 00500 0x61, L"COPY", // Prnt Scr 00501 0x62, (LPWSTR)SZ_KEY_NAME_F1, // F1 00502 0x63, (LPWSTR)SZ_KEY_NAME_F2, // F2 00503 0x64, (LPWSTR)SZ_KEY_NAME_F3, // F3 00504 0x65, (LPWSTR)SZ_KEY_NAME_F4, // F4 00505 0x66, (LPWSTR)SZ_KEY_NAME_F5, // F5 00506 0x67, (LPWSTR)SZ_KEY_NAME_F6, // F6 00507 0x68, (LPWSTR)SZ_KEY_NAME_F7, // F7 00508 0x69, (LPWSTR)SZ_KEY_NAME_F8, // F8 00509 0x6A, (LPWSTR)SZ_KEY_NAME_F9, // F9 00510 0x6B, (LPWSTR)SZ_KEY_NAME_F10, // F10 00511 0x70, L"SHIFT", // Shift 00512 0x71, L"CAPS", // Caps Lock 00513 0x72, (LPWSTR)SZ_KEY_NAME_KANA, // NLS Key Katakana 00514 0x73, L"GRPH", // Alt 00515 0x74, L"CTRL", // Ctrl 00516 0x77, L"Left Windows", 00517 0x78, L"Right Windows", 00518 0x79, L"Application", 00519 0x7d, L"SHIFT", // Right Shift 00520 #else //_PC98_ 00521 0x01, L"Esc", 00522 0x0e, L"Backspace", 00523 0x0f, L"Tab", 00524 0x1c, L"Enter", 00525 0x1d, L"Ctrl", 00526 0x29, (LPWSTR)SZ_KEY_NAME_HANKAKU_ZENKAKU, // NLS Key 00527 0x2a, L"Shift", 00528 0x36, L"Right Shift", 00529 0x37, L"Num *", 00530 0x38, L"Alt", 00531 0x39, L"Space", 00532 0x3a, L"Caps Lock", 00533 0x3b, L"F1", 00534 0x3c, L"F2", 00535 0x3d, L"F3", 00536 0x3e, L"F4", 00537 0x3f, L"F5", 00538 0x40, L"F6", 00539 0x41, L"F7", 00540 0x42, L"F8", 00541 0x43, L"F9", 00542 0x44, L"F10", 00543 0x45, L"Pause", 00544 0x46, L"Scroll Lock", 00545 0x47, L"Num 7", 00546 0x48, L"Num 8", 00547 0x49, L"Num 9", 00548 0x4a, L"Num -", 00549 0x4b, L"Num 4", 00550 0x4c, L"Num 5", 00551 0x4d, L"Num 6", 00552 0x4e, L"Num +", 00553 0x4f, L"Num 1", 00554 0x50, L"Num 2", 00555 0x51, L"Num 3", 00556 0x52, L"Num 0", 00557 0x53, L"Num Del", 00558 0x54, L"Sys Req", 00559 0x57, L"F11", 00560 0x58, L"F12", 00561 0x70, (LPWSTR)SZ_KEY_NAME_HIRAGANA, 00562 0x79, (LPWSTR)SZ_KEY_NAME_HENKAN, 00563 0x7b, (LPWSTR)SZ_KEY_NAME_MUHENKAN, 00564 0x7C, L"F13", 00565 #endif // _PC98_ 00566 0 , NULL 00567 }; 00568 00569 static ALLOC_SECTION_LDATA VSC_LPWSTR aKeyNamesExt[] = { 00570 #if defined(JAPAN) && defined(_PC98_) 00571 #else //_PC98_ 00572 0x1c, L"Num Enter", 00573 0x1d, L"Right Control", 00574 0x35, L"Num /", 00575 0x37, L"Prnt Scrn", 00576 0x38, L"Right Alt", 00577 0x45, L"Num Lock", 00578 0x46, L"Break", 00579 0x47, L"Home", 00580 0x48, L"Up", 00581 0x49, L"Page Up", 00582 0x4b, L"Left", 00583 0x4d, L"Right", 00584 0x4f, L"End", 00585 0x50, L"Down", 00586 0x51, L"Page Down", 00587 0x52, L"Insert", 00588 0x53, L"Delete", 00589 0x5B, L"Left Windows", 00590 0x5C, L"Right Windows", 00591 0x5D, L"Application", 00592 #endif // _PC98_ 00593 0 , NULL 00594 }; 00595 00596 static ALLOC_SECTION_LDATA KBDTABLES KbdTables = { 00597 /* 00598 * Modifier keys 00599 */ 00600 &CharModifiers, 00601 00602 /* 00603 * Characters tables 00604 */ 00605 aVkToWcharTable, 00606 00607 /* 00608 * Diacritics (none for US English) 00609 */ 00610 NULL, 00611 00612 /* 00613 * Names of Keys (no dead keys) 00614 */ 00615 aKeyNames, 00616 aKeyNamesExt, 00617 NULL, 00618 00619 /* 00620 * Scan codes to Virtual Keys 00621 */ 00622 ausVK, 00623 sizeof(ausVK) / sizeof(ausVK[0]), 00624 aE0VscToVk, 00625 aE1VscToVk, 00626 00627 /* 00628 * No Locale-specific special processing 00629 */ 00630 0 00631 }; 00632 00633 PKBDTABLES KbdLayerDescriptor(VOID) 00634 { 00635 return &KbdTables; 00636 } 00637 00638 /***********************************************************************\ 00639 * VkToFuncTable_106[] 00640 * 00641 \***********************************************************************/ 00642 00643 static ALLOC_SECTION_LDATA VK_F VkToFuncTable_106[] = { 00644 { 00645 VK_DBE_ALPHANUMERIC, // Base Vk 00646 KBDNLS_TYPE_TOGGLE, // NLSFEProcType 00647 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00648 0x02, /* 00000010 */ // NLSFEProcSwitch 00649 { // NLSFEProc 00650 {KBDNLS_ALPHANUM,0}, // Base 00651 {KBDNLS_SEND_PARAM_VK,VK_CAPITAL}, // Shift 00652 {KBDNLS_ALPHANUM,0}, // Control 00653 {KBDNLS_ALPHANUM,0}, // Shift+Control 00654 {KBDNLS_ALPHANUM,0}, // Alt 00655 {KBDNLS_ALPHANUM,0}, // Shift+Alt 00656 {KBDNLS_CODEINPUT,0}, // Control+Alt 00657 {KBDNLS_CODEINPUT,0} // Shift+Control+Alt 00658 }, 00659 { // NLSFEProcAlt 00660 {KBDNLS_SEND_PARAM_VK,VK_CAPITAL}, // Base 00661 {KBDNLS_SEND_PARAM_VK,VK_CAPITAL}, // Shift 00662 {KBDNLS_NOEVENT,0}, // Control 00663 {KBDNLS_NOEVENT,0}, // Shift+Control 00664 {KBDNLS_NOEVENT,0}, // Alt 00665 {KBDNLS_NOEVENT,0}, // Shift+Alt 00666 {KBDNLS_NOEVENT,0}, // Control+Alt 00667 {KBDNLS_NOEVENT,0} // Shift+Control+Alt 00668 } 00669 }, 00670 { 00671 VK_DBE_HIRAGANA, // Base Vk 00672 KBDNLS_TYPE_TOGGLE, // NLSFEProcType 00673 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00674 0x08, /* 00001000 */ // NLSFEProcSwitch 00675 { // NLSFEProc 00676 {KBDNLS_HIRAGANA,0}, // Base 00677 {KBDNLS_KATAKANA,0}, // Shift 00678 {KBDNLS_HIRAGANA,0}, // Control 00679 {KBDNLS_SEND_PARAM_VK,VK_KANA}, // Shift+Control 00680 {KBDNLS_ROMAN,0}, // Alt 00681 {KBDNLS_ROMAN,0}, // Shift+Alt 00682 {KBDNLS_ROMAN,0}, // Control+Alt 00683 {KBDNLS_NOEVENT,0} // Shift+Control+Alt 00684 }, 00685 { // NLSFEProcIndexAlt 00686 {KBDNLS_SEND_PARAM_VK,VK_KANA}, // Base 00687 {KBDNLS_SEND_PARAM_VK,VK_KANA}, // Shift 00688 {KBDNLS_SEND_PARAM_VK,VK_KANA}, // Control 00689 {KBDNLS_SEND_PARAM_VK,VK_KANA}, // Shift+Control 00690 {KBDNLS_NOEVENT,0}, // Alt 00691 {KBDNLS_NOEVENT,0}, // Shift+Alt 00692 {KBDNLS_NOEVENT,0}, // Control+Alt 00693 {KBDNLS_NOEVENT,0} // Shift+Control+Alt 00694 } 00695 }, 00696 { 00697 VK_DBE_SBCSCHAR, // Base Vk 00698 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00699 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00700 0x0, // NLSFEProcSwitch 00701 { // NLSFEProc 00702 {KBDNLS_SBCSDBCS,0}, // Base 00703 {KBDNLS_SBCSDBCS,0}, // Shift 00704 {KBDNLS_SBCSDBCS,0}, // Control 00705 {KBDNLS_SBCSDBCS,0}, // Shift+Control 00706 {KBDNLS_SEND_PARAM_VK,VK_KANJI}, // Alt 00707 {KBDNLS_SBCSDBCS,0}, // Shift+Alt 00708 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}, // Control+Alt 00709 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE} // Shift+Control+Alt 00710 }, 00711 { // NLSFEProcIndexAlt 00712 {KBDNLS_NULL,0}, // Base 00713 {KBDNLS_NULL,0}, // Shift 00714 {KBDNLS_NULL,0}, // Control 00715 {KBDNLS_NULL,0}, // Shift+Control 00716 {KBDNLS_NULL,0}, // Alt 00717 {KBDNLS_NULL,0}, // Shift+Alt 00718 {KBDNLS_NULL,0}, // Control+Alt 00719 {KBDNLS_NULL,0} // Shift+Control+Alt 00720 } 00721 }, 00722 { 00723 VK_NONCONVERT, // Base Vk 00724 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00725 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00726 0x0, // NLSFEProcSwitch 00727 { // NLSFEProc 00728 {KBDNLS_SEND_BASE_VK,0}, // Base 00729 {KBDNLS_SEND_BASE_VK,0}, // Shift 00730 {KBDNLS_SEND_BASE_VK,0}, // Control 00731 {KBDNLS_SEND_BASE_VK,0}, // Shift+Control 00732 {KBDNLS_SEND_BASE_VK,0}, // Alt 00733 {KBDNLS_SEND_BASE_VK,0}, // Shift+Alt 00734 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE}, // Control+Alt 00735 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE} // Shift+Control+Alt 00736 }, 00737 { // NLSFEProcIndexAlt 00738 {KBDNLS_NULL,0}, // Base 00739 {KBDNLS_NULL,0}, // Shift 00740 {KBDNLS_NULL,0}, // Control 00741 {KBDNLS_NULL,0}, // Shift+Control 00742 {KBDNLS_NULL,0}, // Alt 00743 {KBDNLS_NULL,0}, // Shift+Alt 00744 {KBDNLS_NULL,0}, // Control+Alt 00745 {KBDNLS_NULL,0} // Shift+Control+Alt 00746 } 00747 } 00748 }; 00749 00750 #if defined(JAPAN) && defined(_PC98_) 00751 static ALLOC_SECTION_LDATA VK_F VkToFuncTable_NEC[] = { 00752 { 00753 VK_DBE_SBCSCHAR, // Base Vk 00754 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00755 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00756 0x0, // NLSFEProcSwitch 00757 { // NLSFEProc 00758 {KBDNLS_SBCSDBCS,0}, // Base 00759 {KBDNLS_SBCSDBCS,0}, // Shift 00760 {KBDNLS_SBCSDBCS,0}, // Control 00761 {KBDNLS_SBCSDBCS,0}, // Shift+Control 00762 {KBDNLS_SBCSDBCS,0}, // Alt 00763 // {KBDNLS_SEND_PARAM_VK,VK_KANJI}, // Alt 00764 {KBDNLS_SBCSDBCS,0}, // Shift+Alt 00765 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}, // Control+Alt 00766 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE} // Shift+Control+Alt 00767 }, 00768 { // NLSFEProcIndexAlt 00769 {KBDNLS_NULL,0}, // Base 00770 {KBDNLS_NULL,0}, // Shift 00771 {KBDNLS_NULL,0}, // Control 00772 {KBDNLS_NULL,0}, // Shift+Control 00773 {KBDNLS_NULL,0}, // Alt 00774 {KBDNLS_NULL,0}, // Shift+Alt 00775 {KBDNLS_NULL,0}, // Control+Alt 00776 {KBDNLS_NULL,0} // Shift+Control+Alt 00777 } 00778 }, 00779 { 00780 VK_NONCONVERT, // Base Vk PC98_NFER key 00781 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00782 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00783 0x0, // NLSFEProcSwitch 00784 { // NLSFEProc 00785 {KBDNLS_SEND_BASE_VK,0}, // Base 00786 {KBDNLS_SEND_BASE_VK,0}, // Shift 00787 {KBDNLS_SEND_PARAM_VK,VK_DBE_ALPHANUMERIC}, // Control 00788 {KBDNLS_SBCSDBCS,0}, // Shift+Control 00789 {KBDNLS_SEND_PARAM_VK,VK_DBE_KATAKANA}, // Alt 00790 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE}, // Shift+Alt 00791 {KBDNLS_SEND_PARAM_VK,VK_DBE_NOCODEINPUT}, // Control+Alt 00792 {KBDNLS_SEND_PARAM_VK,VK_DBE_FLUSHSTRING} // Shift+Control+Alt 00793 }, 00794 { // NLSFEProcIndexAlt 00795 {KBDNLS_NULL,0}, // Base 00796 {KBDNLS_NULL,0}, // Shift 00797 {KBDNLS_NULL,0}, // Control 00798 {KBDNLS_NULL,0}, // Shift+Control 00799 {KBDNLS_NULL,0}, // Alt 00800 {KBDNLS_NULL,0}, // Shift+Alt 00801 {KBDNLS_NULL,0}, // Control+Alt 00802 {KBDNLS_NULL,0} // Shift+Control+Alt 00803 } 00804 }, 00805 { 00806 VK_CONVERT, // Base Vk PC98_XFER key 00807 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00808 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00809 0x0, // NLSFEProcSwitch 00810 { // NLSFEProc 00811 {KBDNLS_SEND_BASE_VK,0}, // Base 00812 {KBDNLS_SEND_BASE_VK,0}, // Shift 00813 {KBDNLS_SEND_PARAM_VK,VK_KANJI}, // Control 00814 {KBDNLS_SEND_BASE_VK,0}, // Shift+Control 00815 {KBDNLS_ROMAN,0}, // Alt 00816 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}, // Shift+Alt 00817 {KBDNLS_SEND_PARAM_VK,VK_DBE_CODEINPUT}, // Control+Alt 00818 {KBDNLS_SEND_PARAM_VK,VK_DBE_HIRAGANA} // Shift+Control+Alt 00819 }, 00820 { // NLSFEProcIndexAlt 00821 {KBDNLS_NULL,0}, // Base 00822 {KBDNLS_NULL,0}, // Shift 00823 {KBDNLS_NULL,0}, // Control 00824 {KBDNLS_NULL,0}, // Shift+Control 00825 {KBDNLS_NULL,0}, // Alt 00826 {KBDNLS_NULL,0}, // Shift+Alt 00827 {KBDNLS_NULL,0}, // Control+Alt 00828 {KBDNLS_NULL,0} // Shift+Control+Alt 00829 } 00830 }, 00831 { 00832 VK_OEM_NEC_EQUAL, // Base Vk NEC98_"=" key 00833 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00834 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00835 0x0, // NLSFEProcSwitch 00836 { // NLSFEProc 00837 {KBDNLS_SEND_BASE_VK,0}, // Base 00838 {KBDNLS_SEND_BASE_VK,0}, // Shift 00839 {KBDNLS_SEND_PARAM_VK,VK_SCROLL}, // Control 00840 {KBDNLS_SEND_BASE_VK,0}, // Shift+Control 00841 {KBDNLS_SEND_BASE_VK,0}, // Alt 00842 {KBDNLS_SEND_BASE_VK,0}, // Shift+Alt 00843 {KBDNLS_SEND_BASE_VK,0}, // Control+Alt 00844 {KBDNLS_SEND_BASE_VK,0} // Shift+Control+Alt 00845 }, 00846 { // NLSFEProcIndexAlt 00847 {KBDNLS_NULL,0}, // Base 00848 {KBDNLS_NULL,0}, // Shift 00849 {KBDNLS_NULL,0}, // Control 00850 {KBDNLS_NULL,0}, // Shift+Control 00851 {KBDNLS_NULL,0}, // Alt 00852 {KBDNLS_NULL,0}, // Shift+Alt 00853 {KBDNLS_NULL,0}, // Control+Alt 00854 {KBDNLS_NULL,0} // Shift+Control+Alt 00855 } 00856 }, 00857 { 00858 VK_HOME, // Base Vk PC98_HOME key 00859 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00860 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00861 0x0, // NLSFEProcSwitch 00862 { // NLSFEProc 00863 {KBDNLS_HOME_OR_CLEAR,0}, // Base 00864 {KBDNLS_SEND_BASE_VK,0}, // Shift 00865 {KBDNLS_HOME_OR_CLEAR,0}, // Control 00866 {KBDNLS_HOME_OR_CLEAR,0}, // Shift+Control 00867 {KBDNLS_HOME_OR_CLEAR,0}, // Alt 00868 {KBDNLS_HOME_OR_CLEAR,0}, // Shift+Alt 00869 {KBDNLS_HOME_OR_CLEAR,0}, // Control+Alt 00870 {KBDNLS_HOME_OR_CLEAR,0} // Shift+Control+Alt 00871 }, 00872 { // NLSFEProcIndexAlt 00873 {KBDNLS_NULL,0}, // Base 00874 {KBDNLS_NULL,0}, // Shift 00875 {KBDNLS_NULL,0}, // Control 00876 {KBDNLS_NULL,0}, // Shift+Control 00877 {KBDNLS_NULL,0}, // Alt 00878 {KBDNLS_NULL,0}, // Shift+Alt 00879 {KBDNLS_NULL,0}, // Control+Alt 00880 {KBDNLS_NULL,0} // Shift+Control+Alt 00881 } 00882 }, 00883 { 00884 VK_END, // Base Vk PC98_HELP key 00885 KBDNLS_TYPE_NORMAL, // NLSFEProcType 00886 KBDNLS_INDEX_NORMAL, // NLSFEProcCurrent 00887 0x0, // NLSFEProcSwitch 00888 { // NLSFEProc 00889 {KBDNLS_HELP_OR_END,0}, // Base 00890 {KBDNLS_HELP_OR_END,0}, // Shift 00891 {KBDNLS_HELP_OR_END,0}, // Control 00892 {KBDNLS_HELP_OR_END,0}, // Shift+Control 00893 {KBDNLS_HELP_OR_END,0}, // Alt 00894 {KBDNLS_HELP_OR_END,0}, // Shift+Alt 00895 {KBDNLS_HELP_OR_END,0}, // Control+Alt 00896 {KBDNLS_HELP_OR_END,0} // Shift+Control+Alt 00897 }, 00898 { // NLSFEProcIndexAlt 00899 {KBDNLS_NULL,0}, // Base 00900 {KBDNLS_NULL,0}, // Shift 00901 {KBDNLS_NULL,0}, // Control 00902 {KBDNLS_NULL,0}, // Shift+Control 00903 {KBDNLS_NULL,0}, // Alt 00904 {KBDNLS_NULL,0}, // Shift+Alt 00905 {KBDNLS_NULL,0}, // Control+Alt 00906 {KBDNLS_NULL,0} // Shift+Control+Alt 00907 } 00908 } 00909 }; 00910 00911 USHORT ausMouseVKey98[] = { 00912 VK_NUMPAD5, 00913 VK_NUMPAD9, 00914 VK_NUMPAD3, 00915 VK_NUMPAD1, 00916 VK_NUMPAD7, 00917 VK_NUMPAD4, 00918 VK_NUMPAD8, 00919 VK_NUMPAD6, 00920 VK_NUMPAD2, 00921 VK_NUMPAD0, 00922 VK_DECIMAL, 00923 VK_MULTIPLY, 00924 VK_ADD, 00925 VK_SUBTRACT, 00926 VK_DIVIDE | KBDEXT, 00927 VK_HOME | KBDEXT 00928 }; 00929 00930 #else //_PC98_ 00931 #endif // _PC98_ 00932 /***********************************************************************\ 00933 * KbdNlsTables 00934 * 00935 \***********************************************************************/ 00936 00937 static ALLOC_SECTION_LDATA KBDNLSTABLES KbdNlsTables = { 00938 #if defined(JAPAN) && defined(_PC98_) 00939 0x0d, // OEM ID (0x0d = NEC) 00940 NLSKBD_INFO_ACCESSIBILITY_KEYMAP,// Information 00941 6, // Number of VK_F entry 00942 VkToFuncTable_NEC, // Pointer to VK_F array 00943 16, // Number of MouseVk entry 00944 ausMouseVKey98 // Pointer to MouseVk array 00945 #else //_PC98_ 00946 0, // OEM ID (0 = Microsoft) 00947 0, // Information 00948 4, // Number of VK_F entry 00949 VkToFuncTable_106, // Pointer to VK_F array 00950 0, // Number of MouseVk entry 00951 NULL // Pointer to MouseVk array 00952 #endif // _PC98_ 00953 }; 00954 00955 PKBDNLSTABLES KbdNlsLayerDescriptor(VOID) 00956 { 00957 return &KbdNlsTables; 00958 }

Generated on Sat May 15 19:40:33 2004 for test by doxygen 1.3.7