kbdnec95.c
Go to the documentation of this file.00001 
#if defined(JAPAN) && defined(_PC98_)
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
#else  // _PC98_
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
#endif // _PC98_
00018 
00019 
#include <windows.h>
00020 
#include <ime.h>
00021 
#include "vkoem.h"
00022 
#include "kbdjpn.h"
00023 
#if defined(JAPAN) && defined(_PC98_)
00024 
#include "kbdnec95.h"
00025 
#else  // _PC98_
00026 
#include "kbd106.h"
00027 
#endif // _PC98_
00028 
00029 
#if defined(_M_IA64)
00030 
#pragma section(".data")
00031 
#define ALLOC_SECTION_LDATA __declspec(allocate(".data"))
00032 
#else
00033 
#pragma data_seg(".data")
00034 #define ALLOC_SECTION_LDATA
00035 
#endif
00036 
00037 
#if defined(JAPAN) && defined(_PC98_)
00038 
00039 
00040 
00041 
#else // _PC98_
00042 
00043 
00044 
00045 
#endif // _PC98_
00046 
00047 static ALLOC_SECTION_LDATA USHORT ausVK[] = {
00048     T00, T01, T02, T03, T04, T05, T06, T07,
00049     T08, T09, T0A, T0B, T0C, T0D, T0E, T0F,
00050     T10, T11, T12, T13, T14, T15, T16, T17,
00051     T18, T19, T1A, T1B, T1C, T1D, T1E, T1F,
00052     T20, T21, T22, T23, T24, T25, T26, T27,
00053 
#if defined(JAPAN) && defined(_PC98_)
00054 
    T28, T29, T2A, T2B, T2C, T2D, T2E, T2F,
00055     T30, T31, T32, T33, T34,
00056 
00057     
00058 
00059 
00060     T35 | KBDSPECIAL,
00061 
#else // _PC98_
00062 
    T28,
00063 
00064     
00065 
00066 
00067     T29 | KBDSPECIAL,
00068 
00069               T2A, T2B, T2C, T2D, T2E, T2F,
00070     T30, T31, T32, T33, T34, T35,
00071 
#endif // _PC98_
00072 
00073 
#if defined(JAPAN) && defined(_PC98_)
00074 
    T36, T37,
00075 
#else //_PC98_
00076 
    
00077 
00078 
00079     T36 | KBDEXT,
00080 
00081     
00082 
00083 
00084     T37 | KBDMULTIVK,
00085 
#endif // _PC98_
00086 
00087     T38, T39,
00088 
00089 
#if defined(JAPAN) && defined(_PC98_)
00090 
    T3A,
00091 
#else //_PC98_
00092 
    
00093 
00094 
00095     T3A | KBDSPECIAL,
00096 
#endif // _PC98_
00097 
00098                    T3B, T3C, T3D, T3E, T3F,
00099 
00100 
#if defined(JAPAN) && defined(_PC98_)
00101 
    
00102 
00103 
00104 
00105 
00106 
00107     T40,                            
00108     T41,                            
00109     T42 | KBDNUMPAD | KBDSPECIAL,   
00110     T43 | KBDNUMPAD | KBDSPECIAL,   
00111     T44 | KBDNUMPAD | KBDSPECIAL,   
00112     T45,                            
00113     T46 | KBDNUMPAD | KBDSPECIAL,   
00114     T47 | KBDNUMPAD | KBDSPECIAL,   
00115     T48 | KBDNUMPAD | KBDSPECIAL,   
00116     T49,                            
00117     T4A | KBDNUMPAD | KBDSPECIAL,   
00118     T4B | KBDNUMPAD | KBDSPECIAL,   
00119     T4C | KBDNUMPAD | KBDSPECIAL,   
00120     T4D | KBDNUMPAD | KBDSPECIAL,   
00121     T4E | KBDNUMPAD | KBDSPECIAL,   
00122     T4F,                            
00123     T50 | KBDNUMPAD | KBDSPECIAL,   
00124 
00125     
00126 
00127 
00128     T51 | KBDSPECIAL,
00129 
00130         T52, T53,
00131 
#else //_PC98_
00132 
    T40, T41, T42, T43, T44,
00133 
00134     
00135 
00136 
00137 
00138 
00139     T45 | KBDEXT | KBDMULTIVK,
00140 
00141     T46 | KBDMULTIVK,
00142 
00143     
00144 
00145 
00146 
00147 
00148     T47 | KBDNUMPAD | KBDSPECIAL,   
00149     T48 | KBDNUMPAD | KBDSPECIAL,   
00150     T49 | KBDNUMPAD | KBDSPECIAL,   
00151     T4A,
00152     T4B | KBDNUMPAD | KBDSPECIAL,   
00153     T4C | KBDNUMPAD | KBDSPECIAL,   
00154     T4D | KBDNUMPAD | KBDSPECIAL,   
00155     T4E,
00156     T4F | KBDNUMPAD | KBDSPECIAL,   
00157     T50 | KBDNUMPAD | KBDSPECIAL,   
00158     T51 | KBDNUMPAD | KBDSPECIAL,   
00159     T52 | KBDNUMPAD | KBDSPECIAL,   
00160     T53 | KBDNUMPAD | KBDSPECIAL,   
00161 
#endif // _PC98_
00162 
00163     T54, T55, T56, T57, T58, T59, T5A, T5B,
00164     T5C, T5D, T5E, T5F, T60, T61, T62, T63,
00165     T64, T65, T66, T67, T68, T69, T6A, T6B,
00166     T6C, T6D, T6E, T6F,
00167 
00168 
#if defined(JAPAN) && defined(_PC98_)
00169 
    T70,
00170 
#else //_PC98_
00171 
    
00172 
00173 
00174     T70 | KBDSPECIAL,
00175 
#endif // _PC98_
00176 
00177                              T71, T72, T73,
00178     T74, T75, T76, T77, T78,
00179 
00180 
#if defined(JAPAN) && defined(_PC98_)
00181 
    T79,
00182 
#else //_PC98_
00183 
    
00184 
00185 
00186     T79 | KBDSPECIAL,
00187 
#endif // _PC98_
00188 
00189                                   T7A,
00190 
00191 
#if defined(JAPAN) && defined(_PC98_)
00192 
    T7B,
00193 
#else //_PC98_
00194 
    
00195 
00196 
00197     T7B | KBDSPECIAL,
00198 
#endif // _PC98_
00199 
00200     T7C, T7D, T7E, T7F
00201 
00202 };
00203 
00204 static ALLOC_SECTION_LDATA VSC_VK 
aE0VscToVk[] = {
00205 
#if defined(JAPAN) && defined(_PC98_)
00206 
#else //_PC98_
00207 
        { 0x1C, X1C | KBDEXT              },  
00208         { 0x1D, X1D | KBDEXT              },  
00209         { 0x35, X35 | KBDEXT              },  
00210         { 0x37, X37 | KBDEXT              },  
00211         { 0x38, X38 | KBDEXT              },  
00212         { 0x46, X46 | KBDEXT              },  
00213         { 0x47, X47 | KBDEXT              },  
00214         { 0x48, X48 | KBDEXT              },  
00215         { 0x49, X49 | KBDEXT              },  
00216         { 0x4B, X4B | KBDEXT              },  
00217         { 0x4D, X4D | KBDEXT              },  
00218         { 0x4F, X4F | KBDEXT              },  
00219         { 0x50, X50 | KBDEXT              },  
00220         { 0x51, X51 | KBDEXT              },  
00221         { 0x52, X52 | KBDEXT              },  
00222         { 0x53, X53 | KBDEXT              },  
00223         { 0x5B, X5B | KBDEXT              },  
00224         { 0x5C, X5C | KBDEXT              },  
00225         { 0x5D, X5D | KBDEXT              },  
00226 
#endif // _PC98_
00227 
        { 0,      0                       }
00228 };
00229 
00230 static ALLOC_SECTION_LDATA VSC_VK 
aE1VscToVk[] = {
00231 
#if defined(JAPAN) && defined(_PC98_)
00232 
#else //_PC98_
00233 
        { 0x1D, Y1D                       },  
00234 
#endif // _PC98_
00235 
        { 0   ,   0                       }
00236 };
00237 
00238 
00239 
00240 
00241 
00242 
00243 
00244 
00245 
00246 
00247 
00248 
00249 static ALLOC_SECTION_LDATA VK_TO_BIT 
aVkToBits[] = {
00250     { VK_SHIFT,   KBDSHIFT },
00251     { VK_CONTROL, KBDCTRL  },
00252     { VK_MENU,    KBDALT   },
00253     { VK_KANA,    KBDKANA  },
00254     { 0,          0        }
00255 };
00256 
00257 
00258 
00259 
00260 
00261 
00262 
00263 
00264 static ALLOC_SECTION_LDATA MODIFIERS 
CharModifiers = {
00265     &
aVkToBits[0],
00266     11,
00267     {
00268     
00269     
00270         0,            
00271         1,            
00272         4,            
00273         6,            
00274         SHFT_INVALID, 
00275         SHFT_INVALID, 
00276         SHFT_INVALID, 
00277         SHFT_INVALID, 
00278         2,            
00279         3,            
00280         5,            
00281         7             
00282     }
00283 };
00284 
00285 
00286 
00287 
00288 
00289 
00290 
00291 
00292 
00293 
00294 
00295 
00296 
00297 
00298 
00299 
00300 
00301 
00302 
00303 
00304 
00305 
00306 
00307 
00308 
00309 
00310 static ALLOC_SECTION_LDATA VK_TO_WCHARS4 
aVkToWch4[] = {
00311     
00312     
00313 
#if defined(JAPAN) && defined(_PC98_)
00314 
    {
'0'          ,          KANALOK ,
'0'       ,
'0'       ,
WCH_WA  ,
WCH_WO  }, 
00315 
#else //_PC98_
00316 
    {
'0'          ,          KANALOK ,
'0'       ,WCH_NONE  ,
WCH_WA  ,
WCH_WO  },
00317 
#endif // _PC98_
00318 
    {
'1'          ,          KANALOK ,
'1'       ,
'!'       ,
WCH_NU  ,
WCH_NU  },
00319     {
'3'          ,          KANALOK ,
'3'       ,
'#'       ,
WCH_A   ,
WCH_AA  },
00320     {
'4'          ,          KANALOK ,
'4'       ,
'$'       ,
WCH_U   ,
WCH_UU  },
00321     {
'5'          ,          KANALOK ,
'5'       ,
'%'       ,
WCH_E   ,
WCH_EE  },
00322     {
'7'          ,          KANALOK ,
'7'       ,0x27      ,
WCH_YA  ,
WCH_YAA },
00323     {
'8'          ,          KANALOK ,
'8'       ,
'('       ,
WCH_YU  ,
WCH_YUU },
00324     {
'9'          ,          KANALOK ,
'9'       ,
')'       ,
WCH_YO  ,
WCH_YOO },
00325     {
'A'          , CAPLOK | KANALOK ,
'a'       ,
'A'       ,
WCH_TI  ,
WCH_TI  },
00326     {
'B'          , CAPLOK | KANALOK ,
'b'       ,
'B'       ,
WCH_KO  ,
WCH_KO  },
00327     {
'C'          , CAPLOK | KANALOK ,
'c'       ,
'C'       ,
WCH_SO  ,
WCH_SO  },
00328     {
'D'          , CAPLOK | KANALOK ,
'd'       ,
'D'       ,
WCH_SI  ,
WCH_SI  },
00329     {
'E'          , CAPLOK | KANALOK ,
'e'       ,
'E'       ,
WCH_I   ,
WCH_II  },
00330     {
'F'          , CAPLOK | KANALOK ,
'f'       ,
'F'       ,
WCH_HA  ,
WCH_HA  },
00331     {
'G'          , CAPLOK | KANALOK ,
'g'       ,
'G'       ,
WCH_KI  ,
WCH_KI  },
00332     {
'H'          , CAPLOK | KANALOK ,
'h'       ,
'H'       ,
WCH_KU  ,
WCH_KU  },
00333     {
'I'          , CAPLOK | KANALOK ,
'i'       ,
'I'       ,
WCH_NI  ,
WCH_NI  },
00334     {
'J'          , CAPLOK | KANALOK ,
'j'       ,
'J'       ,
WCH_MA  ,
WCH_MA  },
00335     {
'K'          , CAPLOK | KANALOK ,
'k'       ,
'K'       ,
WCH_NO  ,
WCH_NO  },
00336     {
'L'          , CAPLOK | KANALOK ,
'l'       ,
'L'       ,
WCH_RI  ,
WCH_RI  },
00337     {
'M'          , CAPLOK | KANALOK ,
'm'       ,
'M'       ,
WCH_MO  ,
WCH_MO  },
00338     {
'N'          , CAPLOK | KANALOK ,
'n'       ,
'N'       ,
WCH_MI  ,
WCH_MI  },
00339     {
'O'          , CAPLOK | KANALOK ,
'o'       ,
'O'       ,
WCH_RA  ,
WCH_RA  },
00340     {
'P'          , CAPLOK | KANALOK ,
'p'       ,
'P'       ,
WCH_SE  ,
WCH_SE  },
00341     {
'Q'          , CAPLOK | KANALOK ,
'q'       ,
'Q'       ,
WCH_TA  ,
WCH_TA  },
00342     {
'R'          , CAPLOK | KANALOK ,
'r'       ,
'R'       ,
WCH_SU  ,
WCH_SU  },
00343     {
'S'          , CAPLOK | KANALOK ,
's'       ,
'S'       ,
WCH_TO  ,
WCH_TO  },
00344     {
'T'          , CAPLOK | KANALOK ,
't'       ,
'T'       ,
WCH_KA  ,
WCH_KA  },
00345     {
'U'          , CAPLOK | KANALOK ,
'u'       ,
'U'       ,
WCH_NA  ,
WCH_NA  },
00346     {
'V'          , CAPLOK | KANALOK ,
'v'       ,
'V'       ,
WCH_HI  ,
WCH_HI  },
00347     {
'W'          , CAPLOK | KANALOK ,
'w'       ,
'W'       ,
WCH_TE  ,
WCH_TE  },
00348     {
'X'          , CAPLOK | KANALOK ,
'x'       ,
'X'       ,
WCH_SA  ,
WCH_SA  },
00349     {
'Y'          , CAPLOK | KANALOK ,
'y'       ,
'Y'       ,
WCH_NN  ,
WCH_NN  },
00350     {
'Z'          , CAPLOK | KANALOK ,
'z'       ,
'Z'       ,
WCH_TU  ,
WCH_TUU },
00351     {VK_OEM_1     ,          KANALOK ,
':'       ,
'*'       ,
WCH_KE  ,
WCH_KE  },
00352     {VK_OEM_2     ,          KANALOK ,
'/'       ,
'?'       ,
WCH_ME  ,
WCH_MD  },
00353 
#if defined(JAPAN) && defined(_PC98_)
00354 
#else //_PC98_
00355 
    {VK_OEM_3     ,          KANALOK ,
'@'       ,
'`'       ,
WCH_VS  ,
WCH_VS  },
00356     {VK_OEM_7     ,          KANALOK ,
'^'       ,
'~'       ,
WCH_HE  ,
WCH_HE  },
00357     {VK_OEM_8     , 0                ,WCH_NONE  ,WCH_NONE  ,WCH_NONE,WCH_NONE},
00358 
#endif // _PC98_
00359 
    {VK_OEM_COMMA ,          KANALOK ,
','       ,
'<'       ,
WCH_NE  ,
WCH_IC  },
00360     {VK_OEM_PERIOD,          KANALOK ,
'.'       ,
'>'       ,
WCH_RU  ,
WCH_IP  },
00361     {VK_OEM_PLUS  ,          KANALOK ,
';'       ,
'+'       ,
WCH_RE  ,
WCH_RE  },
00362     {VK_TAB       , 0                ,
'\t'      ,
'\t'      ,
'\t'    ,
'\t'    },
00363     {VK_ADD       , 0                ,
'+'       ,
'+'       ,
'+'     ,
'+'     },
00364     {VK_DECIMAL   , 0                ,
'.'       ,
'.'       ,
'.'     ,
'.'     },
00365     {VK_DIVIDE    , 0                ,
'/'       ,
'/'       ,
'/'     ,
'/'     },
00366     {VK_MULTIPLY  , 0                ,
'*'       ,
'*'       ,
'*'     ,
'*'     },
00367     {VK_SUBTRACT  , 0                ,
'-'       ,
'-'       ,
'-'     ,
'-'     },
00368 
#if defined(JAPAN) && defined(_PC98_)
00369 
    {VK_SEPARATOR , 0                ,
','       ,
','       ,
','     ,
','     }, 
00370     {VK_OEM_NEC_EQUAL,    0          ,
'='       ,
'='       ,
'='     ,
'='     }, 
00371 
#endif // _PC98_
00372 
    {0            , 0                ,0         ,0         ,0       ,0       }
00373 };
00374 
00375 static ALLOC_SECTION_LDATA VK_TO_WCHARS6 
aVkToWch6[] = {
00376     
00377     
00378     {VK_BACK      , 0       ,
'\b'      ,
'\b'      ,
'\b'    ,
'\b'    , 0x7f      , 0x7f      },
00379     {VK_CANCEL    , 0       ,0x03      ,0x03      ,0x03    ,0x03    , 0x03      , 0x03      },
00380     {VK_ESCAPE    , 0       ,0x1b      ,0x1b      ,0x1b    ,0x1b    , 0x1b      , 0x1b      },
00381 
#if defined(JAPAN) && defined(_PC98_)
00382 
    {VK_OEM_3     , KANALOK ,
'@'       ,
'~'       ,
WCH_VS  ,
WCH_VS  , 0x00      , 0x00      },
00383     {VK_OEM_4     , KANALOK ,
'['       ,
'{'       ,
WCH_SVS ,
WCH_OB  , 0x1b      , 0x1b      },
00384     {VK_OEM_5     , KANALOK ,
'\\'      ,
'|'       ,
WCH_PS  ,
WCH_PS  , 0x1c      , 0x1c      },
00385     {VK_OEM_6     , KANALOK ,
']'       ,
'}'       ,
WCH_MU  ,
WCH_CB  , 0x1d      , 0x1d      },
00386     {VK_OEM_7     , KANALOK ,
'^'       ,
'`'       ,
WCH_HE  ,
WCH_HE  , 0x1e      , 0x1e      },
00387     {VK_OEM_8     , KANALOK ,WCH_NONE  ,
'_'       ,
WCH_RO  ,
WCH_RO  , 0x1f      , 0x1f      },
00388 
#else //_PC98_
00389 
    {VK_OEM_4     , KANALOK ,
'['       ,
'{'       ,
WCH_SVS ,
WCH_OB  , 0x1b      , 0x1b      },
00390     {VK_OEM_5     , KANALOK ,
'\\'      ,
'|'       ,
WCH_PS  ,
WCH_PS  , 0x1c      , 0x1c      },
00391     {VK_OEM_102   , KANALOK ,
'\\'      ,
'_'       ,
WCH_RO  ,
WCH_RO  , 0x1c      , 0x1c      },
00392     {VK_OEM_6     , KANALOK ,
']'       ,
'}'       ,
WCH_MU  ,
WCH_CB  , 0x1d      , 0x1d      },
00393 
#endif // _PC98_
00394 
    {VK_RETURN    , 0       ,
'\r'      ,
'\r'      ,
'\r'    ,
'\r'    , 
'\n'      , 
'\n'      },
00395     {VK_SPACE     , 0       ,
' '       ,
' '       ,
' '     ,
' '     , 0x20      , 0x20      },
00396     {0            , 0       ,0         ,0         ,0       ,0       , 0         , 0         }
00397 };
00398 
00399 static ALLOC_SECTION_LDATA VK_TO_WCHARS8 
aVkToWch8[] = {
00400     
00401     
00402     {
'2'          , KANALOK ,
'2'       ,
'"'       ,
WCH_HU  ,
WCH_HU  , WCH_NONE  , WCH_NONE  , 0x00      , 0x00      },
00403     {
'6'          , KANALOK ,
'6'       ,
'&'       ,
WCH_O   ,
WCH_OO  , WCH_NONE  , WCH_NONE  , 0x1e      , 0x1e      },
00404     {VK_OEM_MINUS , KANALOK ,
'-'       ,
'='       ,
WCH_HO  ,
WCH_HO  , WCH_NONE  , WCH_NONE  , 0x1f      , 0x1f      },
00405     {0            , 0       ,0         ,0         ,0       ,0       , 0         , 0         , 0         , 0         }
00406 };
00407 
00408 
00409 
00410 
00411 
00412 static ALLOC_SECTION_LDATA VK_TO_WCHARS4 
aVkToWch1[] = {
00413     
00414     
00415     { VK_NUMPAD0   , 0      ,  
'0'    , WCH_NONE ,   
'0'  ,WCH_NONE},
00416     { VK_NUMPAD1   , 0      ,  
'1'    , WCH_NONE ,   
'1'  ,WCH_NONE},
00417     { VK_NUMPAD2   , 0      ,  
'2'    , WCH_NONE ,   
'2'  ,WCH_NONE},
00418     { VK_NUMPAD3   , 0      ,  
'3'    , WCH_NONE ,   
'3'  ,WCH_NONE},
00419     { VK_NUMPAD4   , 0      ,  
'4'    , WCH_NONE ,   
'4'  ,WCH_NONE},
00420     { VK_NUMPAD5   , 0      ,  
'5'    , WCH_NONE ,   
'5'  ,WCH_NONE},
00421     { VK_NUMPAD6   , 0      ,  
'6'    , WCH_NONE ,   
'6'  ,WCH_NONE},
00422     { VK_NUMPAD7   , 0      ,  
'7'    , WCH_NONE ,   
'7'  ,WCH_NONE},
00423     { VK_NUMPAD8   , 0      ,  
'8'    , WCH_NONE ,   
'8'  ,WCH_NONE},
00424     { VK_NUMPAD9   , 0      ,  
'9'    , WCH_NONE ,   
'9'  ,WCH_NONE},
00425     { 0            , 0      ,  
'\0'   , 0        ,   0    ,0       }   
00426 };
00427 
00428 
00429 
00430 
00431 
00432 
00433 
00434 
00435 
00436 
00437 
00438 
00439 
00440 
00441 static ALLOC_SECTION_LDATA VK_TO_WCHAR_TABLE 
aVkToWcharTable[] = {
00442     {  (PVK_TO_WCHARS1)
aVkToWch6, 6, 
sizeof(
aVkToWch6[0]) },
00443     {  (PVK_TO_WCHARS1)
aVkToWch8, 8, 
sizeof(
aVkToWch8[0]) },
00444     {  (PVK_TO_WCHARS1)
aVkToWch4, 4, 
sizeof(
aVkToWch4[0]) },
00445     {  (PVK_TO_WCHARS1)
aVkToWch1, 4, 
sizeof(
aVkToWch1[0]) },  
00446     {                       
NULL, 0, 0                    }
00447 };
00448 
00449 
00450 
00451 
00452 
00453 
00454 
00455 
00456 
00457 
00458 static ALLOC_SECTION_LDATA VSC_LPWSTR 
aKeyNames[] = {
00459 
#if defined(JAPAN) && defined(_PC98_)
00460 
00461     0x0e,    
L"BS",             
00462     0x0f,    
L"TAB",            
00463     0x1c,    
L"RETURN",         
00464     0x34,    
L"SPACE",          
00465     0x35,    
L"XFER",           
00466     0x36,    
L"ROLL UP",        
00467     0x37,    
L"ROLL DOWN",      
00468     0x38,    
L"INS",            
00469     0x39,    
L"DEL",            
00470     0x3A,    
L"UP",             
00471     0x3B,    
L"LEFT",           
00472     0x3C,    
L"RIGHT",          
00473     0x3D,    
L"DOWN",           
00474     0x3E,    
L"CLR",            
00475     0x3F,    
L"HELP",           
00476     0x40,    
L"Num -",
00477     0x41,    
L"Num /",
00478     0x42,    
L"Num 7",
00479     0x43,    
L"Num 8",
00480     0x44,    
L"Num 9",
00481     0x45,    
L"Num *",
00482     0x46,    
L"Num 4",
00483     0x47,    
L"Num 5",
00484     0x48,    
L"Num 6",
00485     0x49,    
L"Num +",
00486     0x4a,    
L"Num 1",
00487     0x4b,    
L"Num 2",
00488     0x4c,    
L"Num 3",
00489     0x4d,    
L"Num =",
00490     0x4e,    
L"Num 0",
00491     0x4f,    
L"Num ,",
00492     0x50,    
L"Num .",
00493     0x51,    
L"NFER",                   
00494     0x52,    (LPWSTR)
SZ_KEY_NAME_F11,   
00495     0x53,    (LPWSTR)
SZ_KEY_NAME_F12,   
00496     0x54,    (LPWSTR)
SZ_KEY_NAME_F13,   
00497     0x55,    (LPWSTR)
SZ_KEY_NAME_F14,   
00498     0x56,    (LPWSTR)
SZ_KEY_NAME_F15,   
00499     0x60,    
L"STOP",                   
00500     0x61,    
L"COPY",                   
00501     0x62,    (LPWSTR)
SZ_KEY_NAME_F1,    
00502     0x63,    (LPWSTR)
SZ_KEY_NAME_F2,    
00503     0x64,    (LPWSTR)
SZ_KEY_NAME_F3,    
00504     0x65,    (LPWSTR)
SZ_KEY_NAME_F4,    
00505     0x66,    (LPWSTR)
SZ_KEY_NAME_F5,    
00506     0x67,    (LPWSTR)
SZ_KEY_NAME_F6,    
00507     0x68,    (LPWSTR)
SZ_KEY_NAME_F7,    
00508     0x69,    (LPWSTR)
SZ_KEY_NAME_F8,    
00509     0x6A,    (LPWSTR)
SZ_KEY_NAME_F9,    
00510     0x6B,    (LPWSTR)
SZ_KEY_NAME_F10,   
00511     0x70,    
L"SHIFT",                  
00512     0x71,    
L"CAPS",                   
00513     0x72,    (LPWSTR)
SZ_KEY_NAME_KANA,  
00514     0x73,    
L"GRPH",                   
00515     0x74,    
L"CTRL",                   
00516     0x77,    
L"Left Windows",
00517     0x78,    
L"Right Windows",
00518     0x79,    
L"Application",
00519     0x7d,    
L"SHIFT",                  
00520 
#else //_PC98_
00521 
    0x01,    
L"Esc",
00522     0x0e,    
L"Backspace",
00523     0x0f,    
L"Tab",
00524     0x1c,    
L"Enter",
00525     0x1d,    
L"Ctrl",
00526     0x29,    (LPWSTR)
SZ_KEY_NAME_HANKAKU_ZENKAKU,  
00527     0x2a,    
L"Shift",
00528     0x36,    
L"Right Shift",
00529     0x37,    
L"Num *",
00530     0x38,    
L"Alt",
00531     0x39,    
L"Space",
00532     0x3a,    
L"Caps Lock",
00533     0x3b,    
L"F1",
00534     0x3c,    
L"F2",
00535     0x3d,    
L"F3",
00536     0x3e,    
L"F4",
00537     0x3f,    
L"F5",
00538     0x40,    
L"F6",
00539     0x41,    
L"F7",
00540     0x42,    
L"F8",
00541     0x43,    
L"F9",
00542     0x44,    
L"F10",
00543     0x45,    
L"Pause",
00544     0x46,    
L"Scroll Lock",
00545     0x47,    
L"Num 7",
00546     0x48,    
L"Num 8",
00547     0x49,    
L"Num 9",
00548     0x4a,    
L"Num -",
00549     0x4b,    
L"Num 4",
00550     0x4c,    
L"Num 5",
00551     0x4d,    
L"Num 6",
00552     0x4e,    
L"Num +",
00553     0x4f,    
L"Num 1",
00554     0x50,    
L"Num 2",
00555     0x51,    
L"Num 3",
00556     0x52,    
L"Num 0",
00557     0x53,    
L"Num Del",
00558     0x54,    
L"Sys Req",
00559     0x57,    
L"F11",
00560     0x58,    
L"F12",
00561     0x70,    (LPWSTR)
SZ_KEY_NAME_HIRAGANA,
00562     0x79,    (LPWSTR)
SZ_KEY_NAME_HENKAN,
00563     0x7b,    (LPWSTR)
SZ_KEY_NAME_MUHENKAN,
00564     0x7C,    
L"F13",
00565 
#endif // _PC98_
00566 
    0   ,    
NULL
00567 };
00568 
00569 static ALLOC_SECTION_LDATA VSC_LPWSTR 
aKeyNamesExt[] = {
00570 
#if defined(JAPAN) && defined(_PC98_)
00571 
#else //_PC98_
00572 
    0x1c,    
L"Num Enter",
00573     0x1d,    
L"Right Control",
00574     0x35,    
L"Num /",
00575     0x37,    
L"Prnt Scrn",
00576     0x38,    
L"Right Alt",
00577     0x45,    
L"Num Lock",
00578     0x46,    
L"Break",
00579     0x47,    
L"Home",
00580     0x48,    
L"Up",
00581     0x49,    
L"Page Up",
00582     0x4b,    
L"Left",
00583     0x4d,    
L"Right",
00584     0x4f,    
L"End",
00585     0x50,    
L"Down",
00586     0x51,    
L"Page Down",
00587     0x52,    
L"Insert",
00588     0x53,    
L"Delete",
00589     0x5B,    
L"Left Windows",
00590     0x5C,    
L"Right Windows",
00591     0x5D,    
L"Application",
00592 
#endif // _PC98_
00593 
    0   ,    
NULL
00594 };
00595 
00596 static ALLOC_SECTION_LDATA KBDTABLES 
KbdTables = {
00597     
00598 
00599 
00600     &
CharModifiers,
00601 
00602     
00603 
00604 
00605     
aVkToWcharTable,
00606 
00607     
00608 
00609 
00610     
NULL,
00611 
00612     
00613 
00614 
00615     
aKeyNames,
00616     
aKeyNamesExt,
00617     
NULL,
00618 
00619     
00620 
00621 
00622     
ausVK,
00623     
sizeof(
ausVK) / 
sizeof(
ausVK[0]),
00624     
aE0VscToVk,
00625     
aE1VscToVk,
00626 
00627     
00628 
00629 
00630     0
00631 };
00632 
00633 PKBDTABLES 
KbdLayerDescriptor(VOID)
00634 {
00635     
return &
KbdTables;
00636 }
00637 
00638 
00639 
00640 
00641 
00642 
00643 static ALLOC_SECTION_LDATA VK_F 
VkToFuncTable_106[] = {
00644     {
00645         VK_DBE_ALPHANUMERIC,  
00646         KBDNLS_TYPE_TOGGLE,   
00647         KBDNLS_INDEX_NORMAL,  
00648         0x02,   
00649         {                     
00650             {KBDNLS_ALPHANUM,0},               
00651             {KBDNLS_SEND_PARAM_VK,VK_CAPITAL}, 
00652             {KBDNLS_ALPHANUM,0},               
00653             {KBDNLS_ALPHANUM,0},               
00654             {KBDNLS_ALPHANUM,0},               
00655             {KBDNLS_ALPHANUM,0},               
00656             {KBDNLS_CODEINPUT,0},              
00657             {KBDNLS_CODEINPUT,0}               
00658         },
00659         {                     
00660             {KBDNLS_SEND_PARAM_VK,VK_CAPITAL}, 
00661             {KBDNLS_SEND_PARAM_VK,VK_CAPITAL}, 
00662             {KBDNLS_NOEVENT,0},                
00663             {KBDNLS_NOEVENT,0},                
00664             {KBDNLS_NOEVENT,0},                
00665             {KBDNLS_NOEVENT,0},                
00666             {KBDNLS_NOEVENT,0},                
00667             {KBDNLS_NOEVENT,0}                 
00668         }
00669     },
00670     {
00671         VK_DBE_HIRAGANA,     
00672         KBDNLS_TYPE_TOGGLE,  
00673         KBDNLS_INDEX_NORMAL, 
00674         0x08,  
00675         {                    
00676             {KBDNLS_HIRAGANA,0},             
00677             {KBDNLS_KATAKANA,0},             
00678             {KBDNLS_HIRAGANA,0},             
00679             {KBDNLS_SEND_PARAM_VK,VK_KANA},  
00680             {KBDNLS_ROMAN,0},                
00681             {KBDNLS_ROMAN,0},                
00682             {KBDNLS_ROMAN,0},                
00683             {KBDNLS_NOEVENT,0}               
00684         },
00685         {                    
00686             {KBDNLS_SEND_PARAM_VK,VK_KANA},  
00687             {KBDNLS_SEND_PARAM_VK,VK_KANA},  
00688             {KBDNLS_SEND_PARAM_VK,VK_KANA},  
00689             {KBDNLS_SEND_PARAM_VK,VK_KANA},  
00690             {KBDNLS_NOEVENT,0},              
00691             {KBDNLS_NOEVENT,0},              
00692             {KBDNLS_NOEVENT,0},              
00693             {KBDNLS_NOEVENT,0}               
00694         }
00695     },
00696     {
00697         VK_DBE_SBCSCHAR,     
00698         KBDNLS_TYPE_NORMAL,  
00699         KBDNLS_INDEX_NORMAL, 
00700         0x0,                 
00701         {                    
00702             {KBDNLS_SBCSDBCS,0},             
00703             {KBDNLS_SBCSDBCS,0},             
00704             {KBDNLS_SBCSDBCS,0},             
00705             {KBDNLS_SBCSDBCS,0},             
00706             {KBDNLS_SEND_PARAM_VK,VK_KANJI}, 
00707             {KBDNLS_SBCSDBCS,0},             
00708             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}, 
00709             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}  
00710         },
00711         {                    
00712             {KBDNLS_NULL,0},  
00713             {KBDNLS_NULL,0},  
00714             {KBDNLS_NULL,0},  
00715             {KBDNLS_NULL,0},  
00716             {KBDNLS_NULL,0},  
00717             {KBDNLS_NULL,0},  
00718             {KBDNLS_NULL,0},  
00719             {KBDNLS_NULL,0}   
00720         }
00721     },
00722     {
00723         VK_NONCONVERT,       
00724         KBDNLS_TYPE_NORMAL,  
00725         KBDNLS_INDEX_NORMAL, 
00726         0x0,                 
00727         {                    
00728             {KBDNLS_SEND_BASE_VK,0},         
00729             {KBDNLS_SEND_BASE_VK,0},         
00730             {KBDNLS_SEND_BASE_VK,0},         
00731             {KBDNLS_SEND_BASE_VK,0},         
00732             {KBDNLS_SEND_BASE_VK,0},         
00733             {KBDNLS_SEND_BASE_VK,0},         
00734             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE}, 
00735             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE}  
00736         },
00737         {                         
00738             {KBDNLS_NULL,0},  
00739             {KBDNLS_NULL,0},  
00740             {KBDNLS_NULL,0},  
00741             {KBDNLS_NULL,0},  
00742             {KBDNLS_NULL,0},  
00743             {KBDNLS_NULL,0},  
00744             {KBDNLS_NULL,0},  
00745             {KBDNLS_NULL,0}   
00746         }
00747     }
00748 };
00749 
00750 
#if defined(JAPAN) && defined(_PC98_)
00751 
static ALLOC_SECTION_LDATA VK_F VkToFuncTable_NEC[] = {
00752     {
00753         VK_DBE_SBCSCHAR,     
00754         KBDNLS_TYPE_NORMAL,  
00755         KBDNLS_INDEX_NORMAL, 
00756         0x0,                 
00757         {                    
00758             {KBDNLS_SBCSDBCS,0},             
00759             {KBDNLS_SBCSDBCS,0},             
00760             {KBDNLS_SBCSDBCS,0},             
00761             {KBDNLS_SBCSDBCS,0},             
00762             {KBDNLS_SBCSDBCS,0},             
00763 
00764             {KBDNLS_SBCSDBCS,0},             
00765             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}, 
00766             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}  
00767         },
00768         {                     
00769             {KBDNLS_NULL,0},  
00770             {KBDNLS_NULL,0},  
00771             {KBDNLS_NULL,0},  
00772             {KBDNLS_NULL,0},  
00773             {KBDNLS_NULL,0},  
00774             {KBDNLS_NULL,0},  
00775             {KBDNLS_NULL,0},  
00776             {KBDNLS_NULL,0}   
00777         }
00778     },
00779     {
00780         VK_NONCONVERT,       
00781         KBDNLS_TYPE_NORMAL,  
00782         KBDNLS_INDEX_NORMAL, 
00783         0x0,                 
00784         {                    
00785             {KBDNLS_SEND_BASE_VK,0},                             
00786             {KBDNLS_SEND_BASE_VK,0},                             
00787             {KBDNLS_SEND_PARAM_VK,VK_DBE_ALPHANUMERIC},          
00788             {KBDNLS_SBCSDBCS,0},                                 
00789             {KBDNLS_SEND_PARAM_VK,VK_DBE_KATAKANA},              
00790             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERWORDREGISTERMODE}, 
00791             {KBDNLS_SEND_PARAM_VK,VK_DBE_NOCODEINPUT},           
00792             {KBDNLS_SEND_PARAM_VK,VK_DBE_FLUSHSTRING}            
00793         },
00794         {                     
00795             {KBDNLS_NULL,0},  
00796             {KBDNLS_NULL,0},  
00797             {KBDNLS_NULL,0},  
00798             {KBDNLS_NULL,0},  
00799             {KBDNLS_NULL,0},  
00800             {KBDNLS_NULL,0},  
00801             {KBDNLS_NULL,0},  
00802             {KBDNLS_NULL,0}   
00803         }
00804     },
00805     {
00806         VK_CONVERT,            
00807         KBDNLS_TYPE_NORMAL,  
00808         KBDNLS_INDEX_NORMAL, 
00809         0x0,                 
00810         {                    
00811             {KBDNLS_SEND_BASE_VK,0},                          
00812             {KBDNLS_SEND_BASE_VK,0},                          
00813             {KBDNLS_SEND_PARAM_VK,VK_KANJI},                  
00814             {KBDNLS_SEND_BASE_VK,0},                          
00815             {KBDNLS_ROMAN,0},                                 
00816             {KBDNLS_SEND_PARAM_VK,VK_DBE_ENTERIMECONFIGMODE}, 
00817             {KBDNLS_SEND_PARAM_VK,VK_DBE_CODEINPUT},          
00818             {KBDNLS_SEND_PARAM_VK,VK_DBE_HIRAGANA}            
00819         },
00820         {                     
00821             {KBDNLS_NULL,0},  
00822             {KBDNLS_NULL,0},  
00823             {KBDNLS_NULL,0},  
00824             {KBDNLS_NULL,0},  
00825             {KBDNLS_NULL,0},  
00826             {KBDNLS_NULL,0},  
00827             {KBDNLS_NULL,0},  
00828             {KBDNLS_NULL,0}   
00829         }
00830     },
00831     {
00832         VK_OEM_NEC_EQUAL,    
00833         KBDNLS_TYPE_NORMAL,  
00834         KBDNLS_INDEX_NORMAL, 
00835         0x0,                 
00836         {                    
00837             {KBDNLS_SEND_BASE_VK,0},                  
00838             {KBDNLS_SEND_BASE_VK,0},                  
00839             {KBDNLS_SEND_PARAM_VK,VK_SCROLL},         
00840             {KBDNLS_SEND_BASE_VK,0},                  
00841             {KBDNLS_SEND_BASE_VK,0},                  
00842             {KBDNLS_SEND_BASE_VK,0},                  
00843             {KBDNLS_SEND_BASE_VK,0},                  
00844             {KBDNLS_SEND_BASE_VK,0}                   
00845         },
00846         {                     
00847             {KBDNLS_NULL,0},  
00848             {KBDNLS_NULL,0},  
00849             {KBDNLS_NULL,0},  
00850             {KBDNLS_NULL,0},  
00851             {KBDNLS_NULL,0},  
00852             {KBDNLS_NULL,0},  
00853             {KBDNLS_NULL,0},  
00854             {KBDNLS_NULL,0}   
00855         }
00856     },
00857     {
00858         VK_HOME,             
00859         KBDNLS_TYPE_NORMAL,  
00860         KBDNLS_INDEX_NORMAL, 
00861         0x0,                 
00862         {                    
00863             {KBDNLS_HOME_OR_CLEAR,0},         
00864             {KBDNLS_SEND_BASE_VK,0},          
00865             {KBDNLS_HOME_OR_CLEAR,0},         
00866             {KBDNLS_HOME_OR_CLEAR,0},         
00867             {KBDNLS_HOME_OR_CLEAR,0},         
00868             {KBDNLS_HOME_OR_CLEAR,0},         
00869             {KBDNLS_HOME_OR_CLEAR,0},         
00870             {KBDNLS_HOME_OR_CLEAR,0}          
00871         },
00872         {                     
00873             {KBDNLS_NULL,0},  
00874             {KBDNLS_NULL,0},  
00875             {KBDNLS_NULL,0},  
00876             {KBDNLS_NULL,0},  
00877             {KBDNLS_NULL,0},  
00878             {KBDNLS_NULL,0},  
00879             {KBDNLS_NULL,0},  
00880             {KBDNLS_NULL,0}   
00881         }
00882     },
00883     {
00884         VK_END,              
00885         KBDNLS_TYPE_NORMAL,  
00886         KBDNLS_INDEX_NORMAL, 
00887         0x0,                 
00888         {                    
00889             {KBDNLS_HELP_OR_END,0},         
00890             {KBDNLS_HELP_OR_END,0},         
00891             {KBDNLS_HELP_OR_END,0},         
00892             {KBDNLS_HELP_OR_END,0},         
00893             {KBDNLS_HELP_OR_END,0},         
00894             {KBDNLS_HELP_OR_END,0},         
00895             {KBDNLS_HELP_OR_END,0},         
00896             {KBDNLS_HELP_OR_END,0}          
00897         },
00898         {                     
00899             {KBDNLS_NULL,0},  
00900             {KBDNLS_NULL,0},  
00901             {KBDNLS_NULL,0},  
00902             {KBDNLS_NULL,0},  
00903             {KBDNLS_NULL,0},  
00904             {KBDNLS_NULL,0},  
00905             {KBDNLS_NULL,0},  
00906             {KBDNLS_NULL,0}   
00907         }
00908     }
00909 };
00910 
00911 
USHORT ausMouseVKey98[] = {
00912                        VK_NUMPAD5,
00913                        VK_NUMPAD9,
00914                        VK_NUMPAD3,
00915                        VK_NUMPAD1,
00916                        VK_NUMPAD7,
00917                        VK_NUMPAD4,
00918                        VK_NUMPAD8,
00919                        VK_NUMPAD6,
00920                        VK_NUMPAD2,
00921                        VK_NUMPAD0,
00922                        VK_DECIMAL,
00923                        VK_MULTIPLY,
00924                        VK_ADD,
00925                        VK_SUBTRACT,
00926                        VK_DIVIDE | KBDEXT,
00927                        VK_HOME | KBDEXT
00928                       };
00929 
00930 
#else //_PC98_
00931 
#endif // _PC98_
00932 
00933 
00934 
00935 
00936 
00937 static ALLOC_SECTION_LDATA KBDNLSTABLES 
KbdNlsTables = {
00938 
#if defined(JAPAN) && defined(_PC98_)
00939 
    0x0d,                            
00940     NLSKBD_INFO_ACCESSIBILITY_KEYMAP,
00941     6,                               
00942     VkToFuncTable_NEC,               
00943     16,                              
00944     ausMouseVKey98                   
00945 
#else //_PC98_
00946 
    0,                      
00947     0,                      
00948     4,                      
00949     
VkToFuncTable_106,      
00950     0,                      
00951     
NULL                    
00952 
#endif // _PC98_
00953 
};
00954 
00955 PKBDNLSTABLES 
KbdNlsLayerDescriptor(VOID)
00956 {
00957     
return &
KbdNlsTables;
00958 }
Generated on Sat May 15 19:40:33 2004 for test by
 1.3.7
 1.3.7