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