Changeset 21308 for trunk/src/user32/oslibmsgtranslate.cpp
- Timestamp:
- Jun 18, 2009, 6:27:45 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/oslibmsgtranslate.cpp
r21303 r21308 15 15 * 16 16 */ 17 #define INCL_NLS 18 #define INCL_GPI 17 19 #define INCL_WIN 18 20 #define INCL_PM … … 42 44 #include "user32api.h" 43 45 46 #include <os2im.h> 47 #include <im32.h> 44 48 45 49 #define DBG_LOCALLOG DBG_oslibmsgtranslate … … 48 52 static BOOL fGenerateDoubleClick = FALSE; 49 53 static MSG doubleClickMsg = {0}; 54 55 extern UINT WINAPI GetACP(void); // from winnls.h 50 56 51 57 //For wheel mouse translation … … 753 759 if( scanCode != 0 ) 754 760 { 761 switch( SHORT2FROMMP( os2Msg->mp2 )) 762 { 763 // for Korean 764 case VK_DBE_HANJA : 765 bWinVKey = 0x19; 766 break; 767 768 case VK_DBE_HANGEUL : 769 bWinVKey = 0x15; 770 break; 771 772 case VK_DBE_JAMO : 773 bWinVKey = 0; 774 break; 775 776 // for Japan 777 case VK_DBE_KATAKANA : 778 bWinVKey = 0; 779 break; 780 781 case VK_DBE_HIRAGANA : 782 bWinVKey = 0; 783 break; 784 785 case VK_DBE_SBCSCHAR : 786 bWinVKey = 0; 787 break; 788 789 case VK_DBE_DBCSCHAR : 790 bWinVKey = 0; 791 break; 792 793 case VK_DBE_SBCSDBCSCHAR : 794 bWinVKey = 0; 795 break; 796 797 case VK_DBE_ROMAN : 798 bWinVKey = 0; 799 break; 800 801 // for PRC-Chinese 802 case VK_DBE_HANZI : 803 bWinVKey = 0; 804 break; 805 806 // for Taiwan 807 case VK_DBE_TSANGJYE : 808 bWinVKey = 0; 809 break; 810 811 case VK_DBE_PHONETIC : 812 bWinVKey = 0; 813 break; 814 815 case VK_DBE_CONV : 816 bWinVKey = 0; 817 break; 818 819 case VK_DBE_NOCONV : 820 bWinVKey = 0; 821 break; 822 823 case VK_DBE_ALPHANUMERIC : 824 switch( GetACP()) 825 { 826 case 949 : // Korea 827 case 1361 : 828 bWinVKey = 0x15; 829 break; 830 831 case 932 : // Japan 832 case 942 : 833 case 943 : 834 835 case 936 : // PRC 836 case 1381 : 837 838 case 950 : // Taiwan 839 default : 840 bWinVKey = 0; 841 } 842 break; 843 844 default : 755 845 KeyTranslatePMScanToWinVKey(usPMScanCode, 756 846 FALSE, … … 758 848 &wWinScan, 759 849 &fWinExtended); 850 } 851 760 852 winMsg->wParam = bWinVKey; 761 853 } … … 1079 1171 break; 1080 1172 1173 case WM_IMENOTIFY: 1174 dprintf(("WM_IMENOTIFY")); 1175 1176 winMsg->wParam = 0; 1177 winMsg->lParam = 0; 1178 1179 switch(( ULONG )os2Msg->mp1 ) 1180 { 1181 case IMN_STARTCONVERSION : 1182 winMsg->message = WM_IME_STARTCOMPOSITION_W; 1183 break; 1184 1185 case IMN_ENDCONVERSION : 1186 winMsg->message = WM_IME_ENDCOMPOSITION_W; 1187 break; 1188 1189 case IMN_CONVERSIONFULL : 1190 winMsg->message = WM_IME_COMPOSITIONFULL_W; 1191 break; 1192 1193 case IMN_IMECHANGED : 1194 winMsg->message = WM_IME_SELECT_W; 1195 // todo 1196 // fall through 1197 1198 default : 1199 goto dummymessage; 1200 1201 } 1202 break; 1203 1204 case WM_IMEREQUEST: 1205 winMsg->wParam = 0; 1206 winMsg->lParam = 0; 1207 1208 switch(( ULONG )os2Msg->mp1 ) 1209 { 1210 case IMR_INSTANCEACTIVATE : 1211 { 1212 USHORT usIMR_IA = LOUSHORT( os2Msg->mp2 ); 1213 1214 winMsg->message = WM_IME_SETCONTEXT_W; 1215 winMsg->wParam = HIUSHORT( os2Msg->mp2 ); 1216 1217 if( usIMR_IA & IMR_IA_STATUS ) 1218 winMsg->lParam |= ISC_SHOWUIGUIDELINE_W; 1219 1220 if( usIMR_IA & IMR_IA_CONVERSION ) 1221 winMsg->lParam |= ISC_SHOWUICOMPOSITIONWINDOW_W; 1222 1223 if( usIMR_IA & IMR_IA_CANDIDATE ) 1224 winMsg->lParam |= ISC_SHOWUIALLCANDIDATEWINDOW_W; 1225 1226 if( usIMR_IA & IMR_IA_INFOMSG ) 1227 winMsg->lParam |= 0; // todo 1228 1229 if( usIMR_IA & IMR_IA_REGWORD ) 1230 winMsg->lParam |= 0; // todo 1231 break; 1232 } 1233 1234 case IMR_STATUS : 1235 winMsg->message = WM_IME_NOTIFY_W; 1236 1237 switch(( ULONG )os2Msg->mp2 ) 1238 { 1239 case IMR_STATUS_SHOW : 1240 winMsg->wParam = IMN_OPENSTATUSWINDOW_W; 1241 break; 1242 1243 case IMR_STATUS_HIDE : 1244 winMsg->wParam = IMN_CLOSESTATUSWINDOW_W; 1245 break; 1246 1247 case IMR_STATUS_INPUTMODE : // IMN_SETOPENSTATUS followed by IMN_SETCONVERSIONMODE 1248 winMsg->wParam = IMN_SETOPENSTATUS_W; 1249 break; 1250 1251 case IMR_STATUS_CONVERSIONMODE : 1252 winMsg->wParam = IMN_SETSENTENCEMODE_W; 1253 break; 1254 1255 case IMR_STATUS_STATUSPOS : 1256 winMsg->wParam = IMN_SETSTATUSWINDOWPOS_W; 1257 break; 1258 1259 case IMR_STATUS_STRING : 1260 case IMR_STATUS_STRINGATTR : 1261 case IMR_STATUS_CURSORPOS : 1262 case IMR_STATUS_CURSORATTR : 1263 1264 default : 1265 // todo 1266 goto dummymessage; 1267 1268 } 1269 break; 1270 1271 case IMR_CONVRESULT : 1272 { 1273 ULONG ulIMR = ( ULONG )os2Msg->mp2; 1274 1275 winMsg->message = WM_IME_COMPOSITION_W; 1276 winMsg->wParam = 0; // todo : current DBCS char 1277 1278 if( ulIMR & IMR_CONV_CONVERSIONSTRING ) 1279 winMsg->lParam |= GCS_COMPSTR_W; 1280 1281 if( ulIMR & IMR_CONV_CONVERSIONATTR ) 1282 winMsg->lParam |= GCS_COMPATTR_W; 1283 1284 if( ulIMR & IMR_CONV_CONVERSIONCLAUSE ) 1285 winMsg->lParam |= GCS_COMPCLAUSE_W; 1286 1287 if( ulIMR & IMR_CONV_READINGSTRING ) 1288 winMsg->lParam |= GCS_COMPREADSTR_W; 1289 1290 if( ulIMR & IMR_CONV_READINGATTR ) 1291 winMsg->lParam |= GCS_COMPREADATTR_W; 1292 1293 if( ulIMR & IMR_CONV_READINGCLAUSE ) 1294 winMsg->lParam |= GCS_COMPREADCLAUSE_W; 1295 1296 if( ulIMR & IMR_CONV_CURSORPOS ) 1297 winMsg->lParam |= GCS_CURSORPOS_W; 1298 1299 if( ulIMR & IMR_CONV_CURSORATTR ) 1300 winMsg->lParam |= 0; // todo 1301 1302 if( ulIMR & IMR_CONV_CHANGESTART ) 1303 winMsg->lParam |= GCS_DELTASTART_W; 1304 1305 if( ulIMR & IMR_CONV_INSERTCHAR ) 1306 winMsg->lParam |= CS_INSERTCHAR_W; 1307 1308 if( ulIMR & IMR_CONV_NOMOVECARET ) 1309 winMsg->lParam |= CS_NOMOVECARET_W; 1310 1311 if( ulIMR & IMR_CONV_CONVERSIONFONT ) 1312 winMsg->lParam |= 0; // todo 1313 1314 if( ulIMR & IMR_CONV_CONVERSIONPOS ) 1315 winMsg->lParam |= 0; // todo 1316 1317 if( ulIMR & IMR_RESULT_RESULTSTRING ) 1318 winMsg->lParam = GCS_RESULTSTR_W; // clear all composition info 1319 1320 if( ulIMR & IMR_RESULT_RESULTATTR ) 1321 winMsg->lParam |= 0; // todo 1322 1323 if( ulIMR & IMR_RESULT_RESULTCLAUSE ) 1324 winMsg->lParam |= GCS_RESULTCLAUSE_W; 1325 1326 if( ulIMR & IMR_RESULT_READINGSTRING ) 1327 winMsg->lParam |= GCS_RESULTREADSTR_W; 1328 1329 if( ulIMR & IMR_RESULT_READINGATTR ) 1330 winMsg->lParam |= 0; // todo 1331 1332 if( ulIMR & IMR_RESULT_READINGCLAUSE ) 1333 winMsg->lParam |= GCS_RESULTREADCLAUSE_W; 1334 1335 if( ulIMR && ( winMsg->lParam == 0 )) 1336 goto dummymessage; 1337 break; 1338 } 1339 1340 case IMR_CANDIDATE : 1341 winMsg->message = WM_IME_NOTIFY_W; 1342 switch(( ULONG )os2Msg->mp2 ) 1343 { 1344 case IMR_CANDIDATE_SHOW : 1345 case IMR_CANDIDATE_HIDE : 1346 case IMR_CANDIDATE_SELECT : 1347 case IMR_CANDIDATE_CHANGE : 1348 case IMR_CANDIDATE_CANDIDATEPOS : 1349 default : 1350 // todo 1351 goto dummymessage; 1352 } 1353 break; 1354 1355 case IMR_INFOMSG : 1356 winMsg->message = WM_IME_NOTIFY_W; 1357 winMsg->wParam = IMN_GUIDELINE_W; 1358 break; 1359 1360 case IMR_REGWORD : 1361 goto dummymessage; 1362 1363 case IMR_IMECHANGE : 1364 winMsg->message = WM_IME_SELECT_W; 1365 // todo 1366 goto dummymessage; 1367 1368 case IMR_CONFIG : 1369 // todo 1370 goto dummymessage; 1371 1372 case IMR_DICTIONARY : 1373 // todo 1374 goto dummymessage; 1375 1376 case IMR_OTHERINFO : 1377 // todo 1378 goto dummymessage; 1379 } 1380 break; 1381 1382 #if 0 // application cannot receive this message 1383 case WM_IMECONTROL: 1384 #endif 1081 1385 case WM_INITMENU: 1082 1386 case WM_MENUSELECT:
Note:
See TracChangeset
for help on using the changeset viewer.