Changeset 10607 for trunk/src/user32/oslibmsgtranslate.cpp
- Timestamp:
- May 24, 2004, 11:02:01 AM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/oslibmsgtranslate.cpp
r10595 r10607 1 /* $Id: oslibmsgtranslate.cpp,v 1.12 4 2004-05-03 12:09:01sandervl Exp $ */1 /* $Id: oslibmsgtranslate.cpp,v 1.125 2004-05-24 09:01:59 sandervl Exp $ */ 2 2 /* 3 3 * Window message translation functions for OS/2 … … 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 { 755 KeyTranslatePMScanToWinVKey(usPMScanCode, 756 FALSE, 757 &bWinVKey, 758 &wWinScan, 759 &fWinExtended); 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 : 845 KeyTranslatePMScanToWinVKey(usPMScanCode, 846 FALSE, 847 &bWinVKey, 848 &wWinScan, 849 &fWinExtended); 850 } 851 760 852 winMsg->wParam = bWinVKey; 761 853 } … … 1012 1104 case WM_RENDERFMT: 1013 1105 winMsg->message = WINWM_RENDERFORMAT; 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 } 1106 winMsg->wParam = (UINT) os2Msg->mp1; 1021 1107 break; 1022 1108 … … 1079 1165 break; 1080 1166 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 // todo 1190 // fall through 1191 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; // todo 1222 1223 if( usIMR_IA & IMR_IA_REGWORD ) 1224 winMsg->lParam |= 0; // todo 1225 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_SETCONVERSIONMODE 1242 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 // todo 1260 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 char 1271 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; // todo 1295 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; // todo 1307 1308 if( ulIMR & IMR_CONV_CONVERSIONPOS ) 1309 winMsg->lParam |= 0; // todo 1310 1311 if( ulIMR & IMR_RESULT_RESULTSTRING ) 1312 winMsg->lParam = GCS_RESULTSTR_W; // clear all composition info 1313 1314 if( ulIMR & IMR_RESULT_RESULTATTR ) 1315 winMsg->lParam |= 0; // todo 1316 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; // todo 1325 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 // todo 1345 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 // todo 1360 goto dummymessage; 1361 1362 case IMR_CONFIG : 1363 // todo 1364 goto dummymessage; 1365 1366 case IMR_DICTIONARY : 1367 // todo 1368 goto dummymessage; 1369 1370 case IMR_OTHERINFO : 1371 // todo 1372 goto dummymessage; 1373 } 1374 break; 1375 1376 #if 0 // application cannot receive this message 1377 case WM_IMECONTROL: 1378 #endif 1081 1379 case WM_INITMENU: 1082 1380 case WM_MENUSELECT:
Note:
See TracChangeset
for help on using the changeset viewer.