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
 1.3.7