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