kbd106.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
#include <nt.h>
00010
#include <ntrtl.h>
00011
#include <nturtl.h>
00012
#include <windows.h>
00013
#include <ime.h>
00014
#include "vkoem.h"
00015
#include "kbdjpn.h"
00016
#include "kbd106.h"
00017
00018
#if defined(_M_IA64)
00019
#pragma section(".data")
00020
#define ALLOC_SECTION_LDATA __declspec(allocate(".data"))
00021
#else
00022
#pragma data_seg(".data")
00023 #define ALLOC_SECTION_LDATA
00024
#endif
00025
00026
00027
00028
00029
00030 static ALLOC_SECTION_LDATA USHORT ausVK[] = {
00031 T00, T01, T02, T03, T04, T05, T06, T07,
00032 T08, T09, T0A, T0B, T0C, T0D, T0E, T0F,
00033 T10, T11, T12, T13, T14, T15, T16, T17,
00034 T18, T19, T1A, T1B, T1C, T1D, T1E, T1F,
00035 T20, T21, T22, T23, T24, T25, T26, T27,
00036 T28,
00037
00038
00039
00040
00041 T29 | KBDSPECIAL,
00042
00043 T2A, T2B, T2C, T2D, T2E, T2F,
00044 T30, T31, T32, T33, T34, T35,
00045
00046
00047
00048
00049 T36 | KBDEXT,
00050
00051
00052
00053
00054 T37 | KBDMULTIVK,
00055
00056 T38, T39,
00057
00058
00059
00060
00061 T3A | KBDSPECIAL,
00062
00063 T3B, T3C, T3D, T3E, T3F,
00064 T40, T41, T42, T43, T44,
00065
00066
00067
00068
00069
00070
00071 T45 | KBDEXT | KBDMULTIVK,
00072
00073 T46 | KBDMULTIVK,
00074
00075
00076
00077
00078
00079
00080 T47 | KBDNUMPAD | KBDSPECIAL,
00081 T48 | KBDNUMPAD | KBDSPECIAL,
00082 T49 | KBDNUMPAD | KBDSPECIAL,
00083 T4A,
00084 T4B | KBDNUMPAD | KBDSPECIAL,
00085 T4C | KBDNUMPAD | KBDSPECIAL,
00086 T4D | KBDNUMPAD | KBDSPECIAL,
00087 T4E,
00088 T4F | KBDNUMPAD | KBDSPECIAL,
00089 T50 | KBDNUMPAD | KBDSPECIAL,
00090 T51 | KBDNUMPAD | KBDSPECIAL,
00091 T52 | KBDNUMPAD | KBDSPECIAL,
00092 T53 | KBDNUMPAD | KBDSPECIAL,
00093
00094 T54, T55, T56, T57, T58, T59, T5A, T5B,
00095 T5C, T5D, T5E, T5F, T60, T61, T62, T63,
00096 T64, T65, T66, T67, T68, T69, T6A, T6B,
00097 T6C, T6D, T6E, T6F,
00098
00099
00100
00101
00102 T70 | KBDSPECIAL,
00103
00104 T71, T72, T73,
00105 T74, T75, T76, T77, T78,
00106
00107
00108
00109
00110 T79 | KBDSPECIAL,
00111
00112 T7A,
00113
00114
00115
00116
00117 T7B | KBDSPECIAL,
00118
00119 T7C, T7D, T7E, T7F
00120
00121 };
00122
00123 static ALLOC_SECTION_LDATA VSC_VK
aE0VscToVk[] = {
00124 { 0x10, X10 | KBDEXT },
00125 { 0x19, X19 | KBDEXT },
00126 { 0x1C, X1C | KBDEXT },
00127 { 0x1D, X1D | KBDEXT },
00128 { 0x20, X20 | KBDEXT },
00129 { 0x21, X21 | KBDEXT },
00130 { 0x22, X22 | KBDEXT },
00131 { 0x24, X24 | KBDEXT },
00132 { 0x2E, X2E | KBDEXT },
00133 { 0x30, X30 | KBDEXT },
00134 { 0x32, X32 | KBDEXT },
00135 { 0x35, X35 | KBDEXT },
00136 { 0x37, X37 | KBDEXT },
00137 { 0x38, X38 | KBDEXT },
00138 { 0x46, X46 | KBDEXT },
00139 { 0x47, X47 | KBDEXT },
00140 { 0x48, X48 | KBDEXT },
00141 { 0x49, X49 | KBDEXT },
00142 { 0x4B, X4B | KBDEXT },
00143 { 0x4D, X4D | KBDEXT },
00144 { 0x4F, X4F | KBDEXT },
00145 { 0x50, X50 | KBDEXT },
00146 { 0x51, X51 | KBDEXT },
00147 { 0x52, X52 | KBDEXT },
00148 { 0x53, X53 | KBDEXT },
00149 { 0x5B, X5B | KBDEXT },
00150 { 0x5C, X5C | KBDEXT },
00151 { 0x5D, X5D | KBDEXT },
00152 { 0x5F, X5F | KBDEXT },
00153 { 0x65, X65 | KBDEXT },
00154 { 0x66, X66 | KBDEXT },
00155 { 0x67, X67 | KBDEXT },
00156 { 0x68, X68 | KBDEXT },
00157 { 0x69, X69 | KBDEXT },
00158 { 0x6A, X6A | KBDEXT },
00159 { 0x6B, X6B | KBDEXT },
00160 { 0x6C, X6C | KBDEXT },
00161 { 0x6D, X6D | KBDEXT },
00162 { 0, 0 }
00163 };
00164
00165 static ALLOC_SECTION_LDATA VSC_VK
aE1VscToVk[] = {
00166 { 0x1D, Y1D },
00167 { 0 , 0 }
00168 };
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181 static ALLOC_SECTION_LDATA VK_TO_BIT
aVkToBits[] = {
00182 { VK_SHIFT, KBDSHIFT },
00183 { VK_CONTROL, KBDCTRL },
00184 { VK_MENU, KBDALT },
00185 { VK_KANA, KBDKANA },
00186 { 0, 0 }
00187 };
00188
00189
00190
00191
00192
00193
00194
00195
00196 static ALLOC_SECTION_LDATA MODIFIERS
CharModifiers = {
00197 &
aVkToBits[0],
00198 11,
00199 {
00200
00201
00202 0,
00203 1,
00204 4,
00205 6,
00206 SHFT_INVALID,
00207 SHFT_INVALID,
00208 SHFT_INVALID,
00209 SHFT_INVALID,
00210 2,
00211 3,
00212 5,
00213 7
00214 }
00215 };
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242 static ALLOC_SECTION_LDATA VK_TO_WCHARS4
aVkToWch4[] = {
00243
00244
00245 {
'0' , KANALOK ,
'0' ,WCH_NONE ,
WCH_WA ,
WCH_WO },
00246 {
'1' , KANALOK ,
'1' ,
'!' ,
WCH_NU ,
WCH_NU },
00247 {
'3' , KANALOK ,
'3' ,
'#' ,
WCH_A ,
WCH_AA },
00248 {
'4' , KANALOK ,
'4' ,
'$' ,
WCH_U ,
WCH_UU },
00249 {
'5' , KANALOK ,
'5' ,
'%' ,
WCH_E ,
WCH_EE },
00250 {
'7' , KANALOK ,
'7' ,0x27 ,
WCH_YA ,
WCH_YAA },
00251 {
'8' , KANALOK ,
'8' ,
'(' ,
WCH_YU ,
WCH_YUU },
00252 {
'9' , KANALOK ,
'9' ,
')' ,
WCH_YO ,
WCH_YOO },
00253 {
'A' , CAPLOK | KANALOK ,
'a' ,
'A' ,
WCH_TI ,
WCH_TI },
00254 {
'B' , CAPLOK | KANALOK ,
'b' ,
'B' ,
WCH_KO ,
WCH_KO },
00255 {
'C' , CAPLOK | KANALOK ,
'c' ,
'C' ,
WCH_SO ,
WCH_SO },
00256 {
'D' , CAPLOK | KANALOK ,
'd' ,
'D' ,
WCH_SI ,
WCH_SI },
00257 {
'E' , CAPLOK | KANALOK ,
'e' ,
'E' ,
WCH_I ,
WCH_II },
00258 {
'F' , CAPLOK | KANALOK ,
'f' ,
'F' ,
WCH_HA ,
WCH_HA },
00259 {
'G' , CAPLOK | KANALOK ,
'g' ,
'G' ,
WCH_KI ,
WCH_KI },
00260 {
'H' , CAPLOK | KANALOK ,
'h' ,
'H' ,
WCH_KU ,
WCH_KU },
00261 {
'I' , CAPLOK | KANALOK ,
'i' ,
'I' ,
WCH_NI ,
WCH_NI },
00262 {
'J' , CAPLOK | KANALOK ,
'j' ,
'J' ,
WCH_MA ,
WCH_MA },
00263 {
'K' , CAPLOK | KANALOK ,
'k' ,
'K' ,
WCH_NO ,
WCH_NO },
00264 {
'L' , CAPLOK | KANALOK ,
'l' ,
'L' ,
WCH_RI ,
WCH_RI },
00265 {
'M' , CAPLOK | KANALOK ,
'm' ,
'M' ,
WCH_MO ,
WCH_MO },
00266 {
'N' , CAPLOK | KANALOK ,
'n' ,
'N' ,
WCH_MI ,
WCH_MI },
00267 {
'O' , CAPLOK | KANALOK ,
'o' ,
'O' ,
WCH_RA ,
WCH_RA },
00268 {
'P' , CAPLOK | KANALOK ,
'p' ,
'P' ,
WCH_SE ,
WCH_SE },
00269 {
'Q' , CAPLOK | KANALOK ,
'q' ,
'Q' ,
WCH_TA ,
WCH_TA },
00270 {
'R' , CAPLOK | KANALOK ,
'r' ,
'R' ,
WCH_SU ,
WCH_SU },
00271 {
'S' , CAPLOK | KANALOK ,
's' ,
'S' ,
WCH_TO ,
WCH_TO },
00272 {
'T' , CAPLOK | KANALOK ,
't' ,
'T' ,
WCH_KA ,
WCH_KA },
00273 {
'U' , CAPLOK | KANALOK ,
'u' ,
'U' ,
WCH_NA ,
WCH_NA },
00274 {
'V' , CAPLOK | KANALOK ,
'v' ,
'V' ,
WCH_HI ,
WCH_HI },
00275 {
'W' , CAPLOK | KANALOK ,
'w' ,
'W' ,
WCH_TE ,
WCH_TE },
00276 {
'X' , CAPLOK | KANALOK ,
'x' ,
'X' ,
WCH_SA ,
WCH_SA },
00277 {
'Y' , CAPLOK | KANALOK ,
'y' ,
'Y' ,
WCH_NN ,
WCH_NN },
00278 {
'Z' , CAPLOK | KANALOK ,
'z' ,
'Z' ,
WCH_TU ,
WCH_TUU },
00279 {VK_OEM_1 , KANALOK ,
':' ,
'*' ,
WCH_KE ,
WCH_KE },
00280 {VK_OEM_2 , KANALOK ,
'/' ,
'?' ,
WCH_ME ,
WCH_MD },
00281 {VK_OEM_3 , KANALOK ,
'@' ,
'`' ,
WCH_VS ,
WCH_VS },
00282 {VK_OEM_7 , KANALOK ,
'^' ,
'~' ,
WCH_HE ,
WCH_HE },
00283 {VK_OEM_8 , 0 ,WCH_NONE ,WCH_NONE ,WCH_NONE,WCH_NONE},
00284 {VK_OEM_COMMA , KANALOK ,
',' ,
'<' ,
WCH_NE ,
WCH_IC },
00285 {VK_OEM_PERIOD, KANALOK ,
'.' ,
'>' ,
WCH_RU ,
WCH_IP },
00286 {VK_OEM_PLUS , KANALOK ,
';' ,
'+' ,
WCH_RE ,
WCH_RE },
00287 {VK_TAB , 0 ,
'\t' ,
'\t' ,
'\t' ,
'\t' },
00288 {VK_ADD , 0 ,
'+' ,
'+' ,
'+' ,
'+' },
00289 {VK_DECIMAL , 0 ,
'.' ,
'.' ,
'.' ,
'.' },
00290 {VK_DIVIDE , 0 ,
'/' ,
'/' ,
'/' ,
'/' },
00291 {VK_MULTIPLY , 0 ,
'*' ,
'*' ,
'*' ,
'*' },
00292 {VK_SUBTRACT , 0 ,
'-' ,
'-' ,
'-' ,
'-' },
00293 {0 , 0 ,0 ,0 ,0 ,0 }
00294 };
00295
00296 static ALLOC_SECTION_LDATA VK_TO_WCHARS6
aVkToWch6[] = {
00297
00298
00299 {VK_BACK , 0 ,
'\b' ,
'\b' ,
'\b' ,
'\b' , 0x7f , 0x7f },
00300 {VK_CANCEL , 0 ,0x03 ,0x03 ,0x03 ,0x03 , 0x03 , 0x03 },
00301 {VK_ESCAPE , 0 ,0x1b ,0x1b ,0x1b ,0x1b , 0x1b , 0x1b },
00302 {VK_OEM_4 , KANALOK ,
'[' ,
'{' ,
WCH_SVS ,
WCH_OB , 0x1b , 0x1b },
00303 {VK_OEM_5 , KANALOK ,
'\\' ,
'|' ,
WCH_PS ,
WCH_PS , 0x1c , 0x1c },
00304 {VK_OEM_102 , KANALOK ,
'\\' ,
'_' ,
WCH_RO ,
WCH_RO , 0x1c , 0x1c },
00305 {VK_OEM_6 , KANALOK ,
']' ,
'}' ,
WCH_MU ,
WCH_CB , 0x1d , 0x1d },
00306 {VK_RETURN , 0 ,
'\r' ,
'\r' ,
'\r' ,
'\r' ,
'\n' ,
'\n' },
00307 {VK_SPACE , 0 ,
' ' ,
' ' ,
' ' ,
' ' , 0x20 , 0x20 },
00308 {0 , 0 ,0 ,0 ,0 ,0 , 0 , 0 }
00309 };
00310
00311 static ALLOC_SECTION_LDATA VK_TO_WCHARS8
aVkToWch8[] = {
00312
00313
00314 {
'2' , KANALOK ,
'2' ,
'"' ,
WCH_HU ,
WCH_HU , WCH_NONE , WCH_NONE , 0x00 , 0x00 },
00315 {
'6' , KANALOK ,
'6' ,
'&' ,
WCH_O ,
WCH_OO , WCH_NONE , WCH_NONE , 0x1e , 0x1e },
00316 {VK_OEM_MINUS , KANALOK ,
'-' ,
'=' ,
WCH_HO ,
WCH_HO , WCH_NONE , WCH_NONE , 0x1f , 0x1f },
00317 {0 , 0 ,0 ,0 ,0 ,0 , 0 , 0 , 0 , 0 }
00318 };
00319
00320
00321
00322
00323
00324 static ALLOC_SECTION_LDATA VK_TO_WCHARS4
aVkToWch1[] = {
00325
00326
00327 { VK_NUMPAD0 , 0 ,
'0' , WCH_NONE ,
'0' ,WCH_NONE},
00328 { VK_NUMPAD1 , 0 ,
'1' , WCH_NONE ,
'1' ,WCH_NONE},
00329 { VK_NUMPAD2 , 0 ,
'2' , WCH_NONE ,
'2' ,WCH_NONE},
00330 { VK_NUMPAD3 , 0 ,
'3' , WCH_NONE ,
'3' ,WCH_NONE},
00331 { VK_NUMPAD4 , 0 ,
'4' , WCH_NONE ,
'4' ,WCH_NONE},
00332 { VK_NUMPAD5 , 0 ,
'5' , WCH_NONE ,
'5' ,WCH_NONE},
00333 { VK_NUMPAD6 , 0 ,
'6' , WCH_NONE ,
'6' ,WCH_NONE},
00334 { VK_NUMPAD7 , 0 ,
'7' , WCH_NONE ,
'7' ,WCH_NONE},
00335 { VK_NUMPAD8 , 0 ,
'8' , WCH_NONE ,
'8' ,WCH_NONE},
00336 { VK_NUMPAD9 , 0 ,
'9' , WCH_NONE ,
'9' ,WCH_NONE},
00337 { 0 , 0 ,
'\0' , 0 , 0 ,0 }
00338 };
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353 static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE
aVkToWcharTable[] = {
00354 { (PVK_TO_WCHARS1)
aVkToWch6, 6,
sizeof(
aVkToWch6[0]) },
00355 { (PVK_TO_WCHARS1)
aVkToWch8, 8,
sizeof(
aVkToWch8[0]) },
00356 { (PVK_TO_WCHARS1)
aVkToWch4, 4,
sizeof(
aVkToWch4[0]) },
00357 { (PVK_TO_WCHARS1)
aVkToWch1, 4,
sizeof(
aVkToWch1[0]) },
00358 {
NULL, 0, 0 }
00359 };
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370 static ALLOC_SECTION_LDATA VSC_LPWSTR
aKeyNames[] = {
00371 0x01,
L"Esc",
00372 0x0e,
L"Backspace",
00373 0x0f,
L"Tab",
00374 0x1c,
L"Enter",
00375 0x1d,
L"Ctrl",
00376 0x29, (LPWSTR)
SZ_KEY_NAME_HANKAKU_ZENKAKU,
00377 0x2a,
L"Shift",
00378 0x36,
L"Right Shift",
00379 0x37,
L"Num *",
00380 0x38,
L"Alt",
00381 0x39,
L"Space",
00382 0x3a,
L"Caps Lock",
00383 0x3b,
L"F1",
00384 0x3c,
L"F2",
00385 0x3d,
L"F3",
00386 0x3e,
L"F4",
00387 0x3f,
L"F5",
00388 0x40,
L"F6",
00389 0x41,
L"F7",
00390 0x42,
L"F8",
00391 0x43,
L"F9",
00392 0x44,
L"F10",
00393 0x45,
L"Pause",
00394 0x46,
L"Scroll Lock",
00395 0x47,
L"Num 7",
00396 0x48,
L"Num 8",
00397 0x49,
L"Num 9",
00398 0x4a,
L"Num -",
00399 0x4b,
L"Num 4",
00400 0x4c,
L"Num 5",
00401 0x4d,
L"Num 6",
00402 0x4e,
L"Num +",
00403 0x4f,
L"Num 1",
00404 0x50,
L"Num 2",
00405 0x51,
L"Num 3",
00406 0x52,
L"Num 0",
00407 0x53,
L"Num Del",
00408 0x54,
L"Sys Req",
00409 0x57,
L"F11",
00410 0x58,
L"F12",
00411 0x70, (LPWSTR)
SZ_KEY_NAME_HIRAGANA,
00412 0x79, (LPWSTR)
SZ_KEY_NAME_HENKAN,
00413 0x7b, (LPWSTR)
SZ_KEY_NAME_MUHENKAN,
00414 0x7C,
L"F13",
00415 0 ,
NULL
00416 };
00417
00418 static ALLOC_SECTION_LDATA VSC_LPWSTR
aKeyNamesExt[] = {
00419 0x1c,
L"Num Enter",
00420 0x1d,
L"Right Control",
00421 0x35,
L"Num /",
00422 0x37,
L"Prnt Scrn",
00423 0x38,
L"Right Alt",
00424 0x45,
L"Num Lock",
00425 0x46,
L"Break",
00426 0x47,
L"Home",
00427 0x48,
L"Up",
00428 0x49,
L"Page Up",
00429 0x4b,
L"Left",
00430 0x4d,
L"Right",
00431 0x4f,
L"End",
00432 0x50,
L"Down",
00433 0x51,
L"Page Down",
00434 0x52,
L"Insert",
00435 0x53,
L"Delete",
00436 0x5B,
L"Left Windows",
00437 0x5C,
L"Right Windows",
00438 0x5D,
L"Application",
00439 0 ,
NULL
00440 };
00441
00442 static ALLOC_SECTION_LDATA KBDTABLES
KbdTables = {
00443
00444
00445
00446 &
CharModifiers,
00447
00448
00449
00450
00451
aVkToWcharTable,
00452
00453
00454
00455
00456
NULL,
00457
00458
00459
00460
00461
aKeyNames,
00462
aKeyNamesExt,
00463
NULL,
00464
00465
00466
00467
00468
ausVK,
00469
sizeof(
ausVK) /
sizeof(
ausVK[0]),
00470
aE0VscToVk,
00471
aE1VscToVk,
00472
00473
00474
00475
00476 0
00477 };
00478
00479 PKBDTABLES
KbdLayerDescriptor(VOID)
00480 {
00481
return &
KbdTables;
00482 }
00483
00484
00485
00486
00487
00488
00489 static ALLOC_SECTION_LDATA VK_F
VkToFuncTable_106[] = {
00490 {
00491 VK_DBE_ALPHANUMERIC,
00492 KBDNLS_TYPE_TOGGLE,
00493 KBDNLS_INDEX_NORMAL,
00494 0x02,
00495 {
00496 {KBDNLS_ALPHANUM,0},
00497 {KBDNLS_SEND_PARAM_VK,VK_CAPITAL},
00498 {KBDNLS_ALPHANUM,0},
00499 {KBDNLS_ALPHANUM,0},
00500 {KBDNLS_ALPHANUM,0},
00501 {KBDNLS_ALPHANUM,0},
00502 {KBDNLS_CODEINPUT,0},
00503 {KBDNLS_CODEINPUT,0}
00504 },
00505 {
00506 {KBDNLS_SEND_PARAM_VK,VK_CAPITAL},
00507 {KBDNLS_SEND_PARAM_VK,VK_CAPITAL},
00508 {KBDNLS_NOEVENT,0},
00509 {KBDNLS_NOEVENT,0},
00510 {KBDNLS_NOEVENT,0},
00511 {KBDNLS_NOEVENT,0},
00512 {KBDNLS_NOEVENT,0},
00513 {KBDNLS_NOEVENT,0}
00514 }
00515 },
00516 {
00517 VK_DBE_HIRAGANA,
00518 KBDNLS_TYPE_TOGGLE,
00519 KBDNLS_INDEX_NORMAL,
00520 0x08,
00521 {
00522 {KBDNLS_HIRAGANA,0},
00523 {KBDNLS_KATAKANA,0},
00524 {KBDNLS_HIRAGANA,0},
00525 {KBDNLS_SEND_PARAM_VK,VK_KANA},
00526 {KBDNLS_ROMAN,0},
00527 {KBDNLS_ROMAN,0},
00528 {KBDNLS_ROMAN,0},
00529 {KBDNLS_NOEVENT,0}
00530 },
00531 {
00532 {KBDNLS_SEND_PARAM_VK,VK_KANA},
00533 {KBDNLS_SEND_PARAM_VK,VK_KANA},
00534 {KBDNLS_SEND_PARAM_VK,VK_KANA},
00535 {KBDNLS_SEND_PARAM_VK,VK_KANA},
00536 {KBDNLS_NOEVENT,0},
00537 {KBDNLS_NOEVENT,0},
00538 {KBDNLS_NOEVENT,0},
00539 {KBDNLS_NOEVENT,0}
00540 }
00541 },
00542 {
00543 VK_DBE_SBCSCHAR,
00544 KBDNLS_TYPE_NORMAL,
00545 KBDNLS_INDEX_NORMAL,
00546 0x0,
00547 {
00548 {KBDNLS_SBCSDBCS,0},
00549 {KBDNLS_SBCSDBCS,0},
00550 {KBDNLS_SBCSDBCS,0},
00551 {KBDNLS_SBCSDBCS,0},
00552 {KBDNLS_SEND_PARAM_VK,VK_KANJI},
00553 {KBDNLS_SBCSDBCS,0},
00554 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE},
00555 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}
00556 },
00557 {
00558 {KBDNLS_NULL,0},
00559 {KBDNLS_NULL,0},
00560 {KBDNLS_NULL,0},
00561 {KBDNLS_NULL,0},
00562 {KBDNLS_NULL,0},
00563 {KBDNLS_NULL,0},
00564 {KBDNLS_NULL,0},
00565 {KBDNLS_NULL,0}
00566 }
00567 },
00568 {
00569 VK_NONCONVERT,
00570 KBDNLS_TYPE_NORMAL,
00571 KBDNLS_INDEX_NORMAL,
00572 0x0,
00573 {
00574 {KBDNLS_SEND_BASE_VK,0},
00575 {KBDNLS_SEND_BASE_VK,0},
00576 {KBDNLS_SEND_BASE_VK,0},
00577 {KBDNLS_SEND_BASE_VK,0},
00578 {KBDNLS_SEND_BASE_VK,0},
00579 {KBDNLS_SEND_BASE_VK,0},
00580 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE},
00581 {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE}
00582 },
00583 {
00584 {KBDNLS_NULL,0},
00585 {KBDNLS_NULL,0},
00586 {KBDNLS_NULL,0},
00587 {KBDNLS_NULL,0},
00588 {KBDNLS_NULL,0},
00589 {KBDNLS_NULL,0},
00590 {KBDNLS_NULL,0},
00591 {KBDNLS_NULL,0}
00592 }
00593 }
00594 };
00595
00596
00597
00598
00599
00600
00601 static ALLOC_SECTION_LDATA KBDNLSTABLES
KbdNlsTables = {
00602 0,
00603 0,
00604 4,
00605
VkToFuncTable_106,
00606 0,
00607
NULL
00608 };
00609
00610 static ALLOC_SECTION_LDATA KBDNLSTABLES
KbdNlsTablesNEC98 = {
00611 0x0d,
00612 0,
00613 4,
00614
VkToFuncTable_106,
00615 0,
00616
NULL
00617 };
00618
00619 PKBDNLSTABLES
KbdNlsLayerDescriptor(VOID)
00620 {
00621
if (!IsNEC_98) {
00622
return &
KbdNlsTables;
00623 }
else {
00624
return &
KbdNlsTablesNEC98;
00625 }
00626 }
00627
Generated on Sat May 15 19:40:32 2004 for test by
1.3.7