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