Changeset 21303 for trunk/src/user32/oslibmsgtranslate.cpp
- Timestamp:
- Jun 18, 2009, 12:04:13 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/oslibmsgtranslate.cpp
r10607 r21303 15 15 * 16 16 */ 17 #define INCL_NLS18 #define INCL_GPI19 17 #define INCL_WIN 20 18 #define INCL_PM … … 44 42 #include "user32api.h" 45 43 46 #include <os2im.h>47 #include <im32.h>48 44 49 45 #define DBG_LOCALLOG DBG_oslibmsgtranslate … … 52 48 static BOOL fGenerateDoubleClick = FALSE; 53 49 static MSG doubleClickMsg = {0}; 54 55 extern UINT WINAPI GetACP(void); // from winnls.h56 50 57 51 //For wheel mouse translation … … 759 753 if( scanCode != 0 ) 760 754 { 761 switch( SHORT2FROMMP( os2Msg->mp2 ))762 {763 // for Korean764 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 Japan777 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-Chinese802 case VK_DBE_HANZI :803 bWinVKey = 0;804 break;805 806 // for Taiwan807 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 : // Korea827 case 1361 :828 bWinVKey = 0x15;829 break;830 831 case 932 : // Japan832 case 942 :833 case 943 :834 835 case 936 : // PRC836 case 1381 :837 838 case 950 : // Taiwan839 default :840 bWinVKey = 0;841 }842 break;843 844 default :845 755 KeyTranslatePMScanToWinVKey(usPMScanCode, 846 756 FALSE, … … 848 758 &wWinScan, 849 759 &fWinExtended); 850 }851 852 760 winMsg->wParam = bWinVKey; 853 761 } … … 1104 1012 case WM_RENDERFMT: 1105 1013 winMsg->message = WINWM_RENDERFORMAT; 1106 winMsg->wParam = (UINT) os2Msg->mp1; 1014 extern UINT WIN32API clipboardPMToOdinFormat(ULONG ulPMFormat); 1015 winMsg->wParam = (UINT)clipboardPMToOdinFormat((ULONG)os2Msg->mp1); 1016 if (!winMsg->wParam) 1017 { 1018 dprintf(("WM_RENDERFMT: failed to convert clipboard format (%d)!!!\n", os2Msg->mp1)); 1019 DebugInt3(); 1020 } 1107 1021 break; 1108 1022 … … 1165 1079 break; 1166 1080 1167 case WM_IMENOTIFY:1168 dprintf(("WM_IMENOTIFY"));1169 1170 winMsg->wParam = 0;1171 winMsg->lParam = 0;1172 1173 switch(( ULONG )os2Msg->mp1 )1174 {1175 case IMN_STARTCONVERSION :1176 winMsg->message = WM_IME_STARTCOMPOSITION_W;1177 break;1178 1179 case IMN_ENDCONVERSION :1180 winMsg->message = WM_IME_ENDCOMPOSITION_W;1181 break;1182 1183 case IMN_CONVERSIONFULL :1184 winMsg->message = WM_IME_COMPOSITIONFULL_W;1185 break;1186 1187 case IMN_IMECHANGED :1188 winMsg->message = WM_IME_SELECT_W;1189 // todo1190 // fall through1191 1192 default :1193 goto dummymessage;1194 1195 }1196 break;1197 1198 case WM_IMEREQUEST:1199 winMsg->wParam = 0;1200 winMsg->lParam = 0;1201 1202 switch(( ULONG )os2Msg->mp1 )1203 {1204 case IMR_INSTANCEACTIVATE :1205 {1206 USHORT usIMR_IA = LOUSHORT( os2Msg->mp2 );1207 1208 winMsg->message = WM_IME_SETCONTEXT_W;1209 winMsg->wParam = HIUSHORT( os2Msg->mp2 );1210 1211 if( usIMR_IA & IMR_IA_STATUS )1212 winMsg->lParam |= ISC_SHOWUIGUIDELINE_W;1213 1214 if( usIMR_IA & IMR_IA_CONVERSION )1215 winMsg->lParam |= ISC_SHOWUICOMPOSITIONWINDOW_W;1216 1217 if( usIMR_IA & IMR_IA_CANDIDATE )1218 winMsg->lParam |= ISC_SHOWUIALLCANDIDATEWINDOW_W;1219 1220 if( usIMR_IA & IMR_IA_INFOMSG )1221 winMsg->lParam |= 0; // todo1222 1223 if( usIMR_IA & IMR_IA_REGWORD )1224 winMsg->lParam |= 0; // todo1225 break;1226 }1227 1228 case IMR_STATUS :1229 winMsg->message = WM_IME_NOTIFY_W;1230 1231 switch(( ULONG )os2Msg->mp2 )1232 {1233 case IMR_STATUS_SHOW :1234 winMsg->wParam = IMN_OPENSTATUSWINDOW_W;1235 break;1236 1237 case IMR_STATUS_HIDE :1238 winMsg->wParam = IMN_CLOSESTATUSWINDOW_W;1239 break;1240 1241 case IMR_STATUS_INPUTMODE : // IMN_SETOPENSTATUS followed by IMN_SETCONVERSIONMODE1242 winMsg->wParam = IMN_SETOPENSTATUS_W;1243 break;1244 1245 case IMR_STATUS_CONVERSIONMODE :1246 winMsg->wParam = IMN_SETSENTENCEMODE_W;1247 break;1248 1249 case IMR_STATUS_STATUSPOS :1250 winMsg->wParam = IMN_SETSTATUSWINDOWPOS_W;1251 break;1252 1253 case IMR_STATUS_STRING :1254 case IMR_STATUS_STRINGATTR :1255 case IMR_STATUS_CURSORPOS :1256 case IMR_STATUS_CURSORATTR :1257 1258 default :1259 // todo1260 goto dummymessage;1261 1262 }1263 break;1264 1265 case IMR_CONVRESULT :1266 {1267 ULONG ulIMR = ( ULONG )os2Msg->mp2;1268 1269 winMsg->message = WM_IME_COMPOSITION_W;1270 winMsg->wParam = 0; // todo : current DBCS char1271 1272 if( ulIMR & IMR_CONV_CONVERSIONSTRING )1273 winMsg->lParam |= GCS_COMPSTR_W;1274 1275 if( ulIMR & IMR_CONV_CONVERSIONATTR )1276 winMsg->lParam |= GCS_COMPATTR_W;1277 1278 if( ulIMR & IMR_CONV_CONVERSIONCLAUSE )1279 winMsg->lParam |= GCS_COMPCLAUSE_W;1280 1281 if( ulIMR & IMR_CONV_READINGSTRING )1282 winMsg->lParam |= GCS_COMPREADSTR_W;1283 1284 if( ulIMR & IMR_CONV_READINGATTR )1285 winMsg->lParam |= GCS_COMPREADATTR_W;1286 1287 if( ulIMR & IMR_CONV_READINGCLAUSE )1288 winMsg->lParam |= GCS_COMPREADCLAUSE_W;1289 1290 if( ulIMR & IMR_CONV_CURSORPOS )1291 winMsg->lParam |= GCS_CURSORPOS_W;1292 1293 if( ulIMR & IMR_CONV_CURSORATTR )1294 winMsg->lParam |= 0; // todo1295 1296 if( ulIMR & IMR_CONV_CHANGESTART )1297 winMsg->lParam |= GCS_DELTASTART_W;1298 1299 if( ulIMR & IMR_CONV_INSERTCHAR )1300 winMsg->lParam |= CS_INSERTCHAR_W;1301 1302 if( ulIMR & IMR_CONV_NOMOVECARET )1303 winMsg->lParam |= CS_NOMOVECARET_W;1304 1305 if( ulIMR & IMR_CONV_CONVERSIONFONT )1306 winMsg->lParam |= 0; // todo1307 1308 if( ulIMR & IMR_CONV_CONVERSIONPOS )1309 winMsg->lParam |= 0; // todo1310 1311 if( ulIMR & IMR_RESULT_RESULTSTRING )1312 winMsg->lParam = GCS_RESULTSTR_W; // clear all composition info1313 1314 if( ulIMR & IMR_RESULT_RESULTATTR )1315 winMsg->lParam |= 0; // todo1316 1317 if( ulIMR & IMR_RESULT_RESULTCLAUSE )1318 winMsg->lParam |= GCS_RESULTCLAUSE_W;1319 1320 if( ulIMR & IMR_RESULT_READINGSTRING )1321 winMsg->lParam |= GCS_RESULTREADSTR_W;1322 1323 if( ulIMR & IMR_RESULT_READINGATTR )1324 winMsg->lParam |= 0; // todo1325 1326 if( ulIMR & IMR_RESULT_READINGCLAUSE )1327 winMsg->lParam |= GCS_RESULTREADCLAUSE_W;1328 1329 if( ulIMR && ( winMsg->lParam == 0 ))1330 goto dummymessage;1331 break;1332 }1333 1334 case IMR_CANDIDATE :1335 winMsg->message = WM_IME_NOTIFY_W;1336 switch(( ULONG )os2Msg->mp2 )1337 {1338 case IMR_CANDIDATE_SHOW :1339 case IMR_CANDIDATE_HIDE :1340 case IMR_CANDIDATE_SELECT :1341 case IMR_CANDIDATE_CHANGE :1342 case IMR_CANDIDATE_CANDIDATEPOS :1343 default :1344 // todo1345 goto dummymessage;1346 }1347 break;1348 1349 case IMR_INFOMSG :1350 winMsg->message = WM_IME_NOTIFY_W;1351 winMsg->wParam = IMN_GUIDELINE_W;1352 break;1353 1354 case IMR_REGWORD :1355 goto dummymessage;1356 1357 case IMR_IMECHANGE :1358 winMsg->message = WM_IME_SELECT_W;1359 // todo1360 goto dummymessage;1361 1362 case IMR_CONFIG :1363 // todo1364 goto dummymessage;1365 1366 case IMR_DICTIONARY :1367 // todo1368 goto dummymessage;1369 1370 case IMR_OTHERINFO :1371 // todo1372 goto dummymessage;1373 }1374 break;1375 1376 #if 0 // application cannot receive this message1377 case WM_IMECONTROL:1378 #endif1379 1081 case WM_INITMENU: 1380 1082 case WM_MENUSELECT:
Note:
See TracChangeset
for help on using the changeset viewer.