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