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