- Timestamp:
- Oct 24, 2001, 2:27:06 PM (24 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/HOOK.CPP
r7165 r7190 1 /* $Id: HOOK.CPP,v 1.2 8 2001-10-23 06:22:52phaller Exp $ */1 /* $Id: HOOK.CPP,v 1.29 2001-10-24 12:26:56 phaller Exp $ */ 2 2 3 3 /* … … 783 783 // ALT-Key comes in with different scan code (0xa4 == VK_LMENU_W), 784 784 // then gets translated to 0x12 785 if ( (msg->wParam == VK_LMENU) || 786 (msg->wParam == VK_RMENU) ) 785 switch (msg->wParam) 787 786 { 788 msg->wParam = VK_MENU; // 0x12 787 case VK_LMENU: 788 case VK_RMENU: 789 msg->wParam = VK_MENU; // 0x12 790 break; 791 792 case VK_LCONTROL: 793 case VK_CONTROL: 794 msg->wParam = VK_CONTROL; // 0x11 795 break; 789 796 } 790 797 -
trunk/src/user32/winkeyboard.cpp
r7187 r7190 1 /* $Id: winkeyboard.cpp,v 1. 19 2001-10-24 11:18:19phaller Exp $ */1 /* $Id: winkeyboard.cpp,v 1.20 2001-10-24 12:26:56 phaller Exp $ */ 2 2 /* 3 3 * Win32 <-> PM key translation … … 20 20 #include <heapstring.h> 21 21 #include <pmscan.h> 22 #include <winscan.h> 22 23 #include <winuser32.h> 23 24 #include "initterm.h" … … 141 142 /* 0x59 PMSCAN_BACKTAB */ , 0x00 ,FALSE 142 143 /* 0x5A PMSCAN_PADENTER */ , VK_RETURN ,TRUE 143 /* 0x5B PMSCAN_CTRLRIGHT */ , VK_ CONTROL,TRUE144 /* 0x5B PMSCAN_CTRLRIGHT */ , VK_RCONTROL ,TRUE 144 145 /* 0x5C PMSCAN_PADSLASH */ , VK_DIVIDE ,TRUE 145 146 /* 0x5D PMSCAN_PRINT */ , VK_PRINT ,FALSE … … 577 578 }; 578 579 580 581 // @@@PH 582 // Note: windoes uses different scancodes if numlock is pressed 583 // This is not (yet) reflected here! 584 BYTE abPMScanToWinScan[256][2] = 585 /****************************************************************************/ 586 /* PM Scancode * Win32 Scancode Extended Key */ 587 /****************************************************************************/ 588 /* 0x00 */ { 0x00, FALSE 589 /* 0x01 PMSCAN_ESC */ , WINSCAN_ESC ,FALSE 590 /* 0x02 PMSCAN_ONE */ , WINSCAN_ONE ,FALSE 591 /* 0x03 PMSCAN_TWO */ , WINSCAN_TWO ,FALSE 592 /* 0x04 PMSCAN_THREE */ , WINSCAN_THREE ,FALSE 593 /* 0x05 PMSCAN_FOUR */ , WINSCAN_FOUR ,FALSE 594 /* 0x06 PMSCAN_FIVE */ , WINSCAN_FIVE ,FALSE 595 /* 0x07 PMSCAN_SIX */ , WINSCAN_SIX ,FALSE 596 /* 0x08 PMSCAN_SEVEN */ , WINSCAN_SEVEN ,FALSE 597 /* 0x09 PMSCAN_EIGHT */ , WINSCAN_EIGHT ,FALSE 598 /* 0x0A PMSCAN_NINE */ , WINSCAN_NINE ,FALSE 599 /* 0x0B PMSCAN_ZERO */ , WINSCAN_ZERO ,FALSE 600 /* 0x0C PMSCAN_HYPHEN */ , WINSCAN_HYPHEN ,FALSE 601 /* 0x0D PMSCAN_EQUAL */ , WINSCAN_EQUAL ,FALSE 602 /* 0x0E PMSCAN_BACKSPACE */ , WINSCAN_BACKSPACE ,FALSE 603 /* 0x0F PMSCAN_TAB */ , WINSCAN_TAB ,FALSE 604 /* 0x10 PMSCAN_Q */ , WINSCAN_Q ,FALSE 605 /* 0x11 PMSCAN_W */ , WINSCAN_W ,FALSE 606 /* 0x12 PMSCAN_E */ , WINSCAN_E ,FALSE 607 /* 0x13 PMSCAN_R */ , WINSCAN_R ,FALSE 608 /* 0x14 PMSCAN_T */ , WINSCAN_T ,FALSE 609 /* 0x15 PMSCAN_Y */ , WINSCAN_Y ,FALSE 610 /* 0x16 PMSCAN_U */ , WINSCAN_U ,FALSE 611 /* 0x17 PMSCAN_I */ , WINSCAN_I ,FALSE 612 /* 0x18 PMSCAN_O */ , WINSCAN_O ,FALSE 613 /* 0x19 PMSCAN_P */ , WINSCAN_P ,FALSE 614 /* 0x1A PMSCAN_BRACKETLEFT */ , WINSCAN_BRACKETLEFT ,FALSE 615 /* 0x1B PMSCAN_BRACKETRIGHT */ , WINSCAN_BRACKETRIGHT ,FALSE 616 /* 0x1C PMSCAN_ENTER */ , WINSCAN_ENTER ,FALSE 617 /* 0x1D PMSCAN_CTRLLEFT */ , WINSCAN_CTRLLEFT ,FALSE 618 /* 0x1E PMSCAN_A */ , WINSCAN_A ,FALSE 619 /* 0x1F PMSCAN_S */ , WINSCAN_S ,FALSE 620 /* 0x20 PMSCAN_D */ , WINSCAN_D ,FALSE 621 /* 0x21 PMSCAN_F */ , WINSCAN_F ,FALSE 622 /* 0x22 PMSCAN_G */ , WINSCAN_G ,FALSE 623 /* 0x23 PMSCAN_H */ , WINSCAN_H ,FALSE 624 /* 0x24 PMSCAN_J */ , WINSCAN_J ,FALSE 625 /* 0x25 PMSCAN_K */ , WINSCAN_K ,FALSE 626 /* 0x26 PMSCAN_L */ , WINSCAN_L ,FALSE 627 /* 0x27 PMSCAN_SEMICOLON */ , WINSCAN_SEMICOLON ,FALSE 628 /* 0x28 PMSCAN_QUOTESINGLE */ , WINSCAN_QUOTESINGLE ,FALSE 629 /* 0x29 PMSCAN_GRAVE */ , WINSCAN_GRAVE ,FALSE 630 /* 0x2A PMSCAN_SHIFTLEFT */ , WINSCAN_SHIFTLEFT ,FALSE 631 632 // @@@PH not verified below 633 /* 0x2B PMSCAN_BACKSLASH */ , WINSCAN_BACKSLASH ,FALSE 634 /* 0x2C PMSCAN_Z */ , WINSCAN_Z ,FALSE 635 /* 0x2D PMSCAN_X */ , WINSCAN_X ,FALSE 636 /* 0x2E PMSCAN_C */ , WINSCAN_C ,FALSE 637 /* 0x2F PMSCAN_V */ , WINSCAN_V ,FALSE 638 /* 0x30 PMSCAN_B */ , WINSCAN_B ,FALSE 639 /* 0x31 PMSCAN_N */ , WINSCAN_N ,FALSE 640 /* 0x32 PMSCAN_M */ , WINSCAN_M ,FALSE 641 /* 0x33 PMSCAN_COMMA */ , WINSCAN_COMMA ,FALSE 642 /* 0x34 PMSCAN_PERIOD */ , WINSCAN_PERIOD ,FALSE 643 /* 0x35 PMSCAN_SLASH */ , WINSCAN_SLASH ,FALSE 644 /* 0x36 PMSCAN_SHIFTRIGHT */ , WINSCAN_SHIFTRIGHT ,FALSE 645 /* 0x37 PMSCAN_PADASTERISK */ , WINSCAN_PADASTERISK ,FALSE 646 /* 0x38 PMSCAN_ALTLEFT */ , WINSCAN_ALTLEFT ,FALSE 647 /* 0x39 PMSCAN_SPACE */ , WINSCAN_SPACE ,FALSE 648 /* 0x3A PMSCAN_CAPSLOCK */ , WINSCAN_CAPSLOCK ,FALSE 649 /* 0x3B PMSCAN_F1 */ , WINSCAN_F1 ,FALSE 650 /* 0x3C PMSCAN_F2 */ , WINSCAN_F2 ,FALSE 651 /* 0x3D PMSCAN_F3 */ , WINSCAN_F3 ,FALSE 652 /* 0x3E PMSCAN_F4 */ , WINSCAN_F4 ,FALSE 653 /* 0x3F PMSCAN_F5 */ , WINSCAN_F5 ,FALSE 654 /* 0x40 PMSCAN_F6 */ , WINSCAN_F6 ,FALSE 655 /* 0x41 PMSCAN_F7 */ , WINSCAN_F7 ,FALSE 656 /* 0x42 PMSCAN_F8 */ , WINSCAN_F8 ,FALSE 657 /* 0x43 PMSCAN_F9 */ , WINSCAN_F9 ,FALSE 658 /* 0x44 PMSCAN_F10 */ , WINSCAN_F10 ,FALSE 659 /* 0x45 PMSCAN_NUMLOCK */ , WINSCAN_NUMLOCK ,TRUE 660 /* 0x46 PMSCAN_SCROLLLOCK */ , WINSCAN_SCROLLLOCK ,FALSE 661 /* 0x47 PMSCAN_PAD7 */ , WINSCAN_PAD7 ,FALSE 662 /* 0x48 PMSCAN_PAD8 */ , WINSCAN_PAD8 ,FALSE 663 /* 0x49 PMSCAN_PAD9 */ , WINSCAN_PAD9 ,FALSE 664 /* 0x4A PMSCAN_PADMINUS */ , WINSCAN_PADMINUS ,FALSE 665 /* 0x4B PMSCAN_PAD4 */ , WINSCAN_PAD4 ,FALSE 666 /* 0x4C PMSCAN_PAD5 */ , WINSCAN_PAD5 ,FALSE 667 /* 0x4D PMSCAN_PAD6 */ , WINSCAN_PAD6 ,FALSE 668 /* 0x4E PMSCAN_PADPLUS */ , WINSCAN_PADPLUS ,FALSE 669 /* 0x4F PMSCAN_PAD1 */ , WINSCAN_PAD1 ,FALSE 670 /* 0x50 PMSCAN_PAD2 */ , WINSCAN_PAD2 ,FALSE 671 /* 0x51 PMSCAN_PAD3 */ , WINSCAN_PAD3 ,FALSE 672 /* 0x52 PMSCAN_PAD0 */ , WINSCAN_PAD0 ,FALSE 673 /* 0x53 PMSCAN_PADPERIOD */ , WINSCAN_PADPERIOD ,FALSE 674 /* 0x54 PMSCAN_SYSREQ */ , 0x00 ,FALSE 675 /* 0x55 PMSCAN_RESET */ , 0x00 ,FALSE 676 /* 0x56 PMSCAN_EXTRA */ , WINSCAN_EXTRA ,FALSE 677 /* 0x57 PMSCAN_F11 */ , WINSCAN_F11 ,FALSE 678 /* 0x58 PMSCAN_F12 */ , WINSCAN_F12 ,FALSE 679 /* 0x59 PMSCAN_BACKTAB */ , 0x00 ,FALSE 680 /* 0x5A PMSCAN_PADENTER */ , WINSCAN_PADENTER ,TRUE 681 /* 0x5B PMSCAN_CTRLRIGHT */ , WINSCAN_CTRLRIGHT ,TRUE 682 /* 0x5C PMSCAN_PADSLASH */ , WINSCAN_PADSLASH ,TRUE 683 /* 0x5D PMSCAN_PRINT */ , WINSCAN_PRINT ,FALSE 684 /* 0x5E PMSCAN_ALTRIGHT */ , WINSCAN_ALTRIGHT ,TRUE 685 /* 0x5F PMSCAN_PAUSE */ , WINSCAN_PAUSE ,FALSE 686 /* 0x60 PMSCAN_HOME */ , WINSCAN_HOME ,TRUE 687 /* 0x61 PMSCAN_UP */ , WINSCAN_UP ,TRUE 688 /* 0x62 PMSCAN_PAGEUP */ , WINSCAN_PAGEUP ,TRUE 689 /* 0x63 PMSCAN_LEFT */ , WINSCAN_LEFT ,TRUE 690 /* 0x64 PMSCAN_RIGHT */ , WINSCAN_RIGHT ,TRUE 691 /* 0x65 PMSCAN_END */ , WINSCAN_END ,TRUE 692 /* 0x66 PMSCAN_DOWN */ , WINSCAN_DOWN ,TRUE 693 /* 0x67 PMSCAN_PAGEDOWN */ , WINSCAN_PAGEDOWN ,TRUE 694 /* 0x68 PMSCAN_INSERT */ , WINSCAN_INSERT ,TRUE 695 /* 0x69 PMSCAN_DELETE */ , WINSCAN_DELETE ,TRUE 696 /* 0x6A PMSCAN_F23 */ , WINSCAN_F23 ,FALSE 697 /* 0x6B PMSCAN_F24 */ , WINSCAN_F24 ,FALSE 698 /* 0x6C PMSCAN_SYSMEM */ , 0x00 ,FALSE 699 /* 0x6D PMSCAN_ERASEEOF */ , WINSCAN_ERASEEOF ,FALSE 700 /* 0x6E PMSCAN_BREAK */ , WINSCAN_BREAK ,TRUE 701 /* 0x6F PMSCAN_MOVEWIN */ , 0x00 ,FALSE 702 /* 0x70 PMSCAN_NLS3 */ , 0x00 ,FALSE 703 /* 0x71 PMSCAN_HELP */ , WINSCAN_HELP ,FALSE 704 /* 0x72 PMSCAN_TASKMAN */ , 0x00 ,FALSE 705 /* 0x73 PMSCAN_B11 */ , 0x00 ,FALSE 706 /* 0x74 PMSCAN_JUMP */ , 0x00 ,FALSE 707 /* 0x75 PMSCAN_MINWIN */ , 0x00 ,FALSE 708 /* 0x76 PMSCAN_CLEAR */ , 0x00 ,FALSE 709 /* 0x77 PMSCAN_77 */ , 0x00 ,FALSE 710 /* 0x78 PMSCAN_78 */ , 0x00 ,FALSE 711 /* 0x79 PMSCAN_NLS2 */ , 0x00 ,FALSE 712 /* 0x7a PMSCAN_SIZE */ , 0x00 ,FALSE 713 /* 0x7b PMSCAN_NLS1 */ , 0x00 ,FALSE 714 /* 0x7c PMSCAN_APPLICATION */ , WINSCAN_APPLICATION ,FALSE 715 /* 0x7d PMSCAN_E13 */ , 0x00 ,FALSE 716 /* 0x7e PMSCAN */ , 0x00 ,FALSE 717 /* 0x7f PMSCAN */ , 0x00 ,FALSE 718 /* 0x80 PMSCAN_PA1 */ , WINSCAN_PA1 ,FALSE 719 /* 0x81 PMSCAN_F13 */ , WINSCAN_F13 ,FALSE 720 /* 0x82 PMSCAN_F14 */ , WINSCAN_F14 ,FALSE 721 /* 0x83 PMSCAN_F15 */ , WINSCAN_F15 ,FALSE 722 /* 0x84 PMSCAN_PA2 */ , 0x00 ,FALSE 723 /* 0x85 PMSCAN_PA3 */ , 0x00 ,FALSE 724 /* 0x86 PMSCAN_SPACEBREAK */ , 0x00 ,FALSE 725 /* 0x87 PMSCAN_TABRIGHT */ , 0x00 ,FALSE 726 /* 0x88 PMSCAN_NOOP */ , 0x00 ,FALSE 727 /* 0x89 PMSCAN_F16 */ , WINSCAN_F16 ,FALSE 728 /* 0x8a PMSCAN_F17 */ , WINSCAN_F17 ,FALSE 729 /* 0x8b PMSCAN_F18 */ , WINSCAN_F18 ,FALSE 730 /* 0x8c PMSCAN_F19 */ , WINSCAN_F19 ,FALSE 731 /* 0x8d PMSCAN_F20 */ , WINSCAN_F20 ,FALSE 732 /* 0x8e PMSCAN_F21 */ , WINSCAN_F21 ,FALSE 733 /* 0x8f PMSCAN_F22 */ , WINSCAN_F22 ,FALSE 734 /* 0x90 */ , 0x00 ,FALSE 735 /* 0x91 */ , 0x00 ,FALSE 736 /* 0x92 */ , 0x00 ,FALSE 737 /* 0x93 */ , 0x00 ,FALSE 738 /* 0x94 */ , 0x00 ,FALSE 739 /* 0x95 */ , 0x00 ,FALSE 740 /* 0x96 */ , 0x00 ,FALSE 741 /* 0x97 */ , 0x00 ,FALSE 742 /* 0x98 */ , 0x00 ,FALSE 743 /* 0x99 */ , 0x00 ,FALSE 744 /* 0x9A */ , 0x00 ,FALSE 745 /* 0x9B */ , 0x00 ,FALSE 746 /* 0x9C */ , 0x00 ,FALSE 747 /* 0x9D */ , 0x00 ,FALSE 748 /* 0x9E */ , 0x00 ,FALSE 749 /* 0x9F */ , 0x00 ,FALSE 750 /* 0xA0 */ , 0x00 ,FALSE 751 /* 0xA1 */ , 0x00 ,FALSE 752 /* 0xA2 */ , 0x00 ,FALSE 753 /* 0xA3 */ , 0x00 ,FALSE 754 /* 0xA4 */ , 0x00 ,FALSE 755 /* 0xA5 */ , 0x00 ,FALSE 756 /* 0xA6 */ , 0x00 ,FALSE 757 /* 0xA7 */ , 0x00 ,FALSE 758 /* 0xA8 */ , 0x00 ,FALSE 759 /* 0xA9 */ , 0x00 ,FALSE 760 /* 0xAA */ , 0x00 ,FALSE 761 /* 0xAB */ , 0x00 ,FALSE 762 /* 0xAC */ , 0x00 ,FALSE 763 /* 0xAD */ , 0x00 ,FALSE 764 /* 0xAE */ , 0x00 ,FALSE 765 /* 0xAF */ , 0x00 ,FALSE 766 /* 0xB0 */ , 0x00 ,FALSE 767 /* 0xB1 */ , 0x00 ,FALSE 768 /* 0xB2 */ , 0x00 ,FALSE 769 /* 0xB3 */ , 0x00 ,FALSE 770 /* 0xB4 */ , 0x00 ,FALSE 771 /* 0xB5 */ , 0x00 ,FALSE 772 /* 0xB6 */ , 0x00 ,FALSE 773 /* 0xB7 */ , 0x00 ,FALSE 774 /* 0xB8 */ , 0x00 ,FALSE 775 /* 0xB9 */ , 0x00 ,FALSE 776 /* 0xBA */ , 0x00 ,FALSE 777 /* 0xBB */ , 0x00 ,FALSE 778 /* 0xBC */ , 0x00 ,FALSE 779 /* 0xBD */ , 0x00 ,FALSE 780 /* 0xBE */ , 0x00 ,FALSE 781 /* 0xBF */ , 0x00 ,FALSE 782 /* 0xC0 */ , 0x00 ,FALSE 783 /* 0xC1 */ , 0x00 ,FALSE 784 /* 0xC2 */ , 0x00 ,FALSE 785 /* 0xC3 */ , 0x00 ,FALSE 786 /* 0xC4 */ , 0x00 ,FALSE 787 /* 0xC5 */ , 0x00 ,FALSE 788 /* 0xC6 */ , 0x00 ,FALSE 789 /* 0xC7 */ , 0x00 ,FALSE 790 /* 0xC8 */ , 0x00 ,FALSE 791 /* 0xC9 */ , 0x00 ,FALSE 792 /* 0xCA */ , 0x00 ,FALSE 793 /* 0xCB */ , 0x00 ,FALSE 794 /* 0xCC */ , 0x00 ,FALSE 795 /* 0xCD */ , 0x00 ,FALSE 796 /* 0xCE */ , 0x00 ,FALSE 797 /* 0xCF */ , 0x00 ,FALSE 798 /* 0xD0 */ , 0x00 ,FALSE 799 /* 0xD1 */ , 0x00 ,FALSE 800 /* 0xD2 */ , 0x00 ,FALSE 801 /* 0xD3 */ , 0x00 ,FALSE 802 /* 0xD4 */ , 0x00 ,FALSE 803 /* 0xD5 */ , 0x00 ,FALSE 804 /* 0xD6 */ , 0x00 ,FALSE 805 /* 0xD7 */ , 0x00 ,FALSE 806 /* 0xD8 */ , 0x00 ,FALSE 807 /* 0xD9 */ , 0x00 ,FALSE 808 /* 0xDA */ , 0x00 ,FALSE 809 /* 0xDB */ , 0x00 ,FALSE 810 /* 0xDC */ , 0x00 ,FALSE 811 /* 0xDD */ , 0x00 ,FALSE 812 /* 0xDE */ , 0x00 ,FALSE 813 /* 0xDF */ , 0x00 ,FALSE 814 /* 0xE0 */ , 0x00 ,FALSE 815 /* 0xE1 */ , 0x00 ,FALSE 816 /* 0xE2 */ , 0x00 ,FALSE 817 /* 0xE3 */ , 0x00 ,FALSE 818 /* 0xE4 */ , 0x00 ,FALSE 819 /* 0xE5 */ , 0x00 ,FALSE 820 /* 0xE6 */ , 0x00 ,FALSE 821 /* 0xE7 */ , 0x00 ,FALSE 822 /* 0xE8 */ , 0x00 ,FALSE 823 /* 0xE9 */ , 0x00 ,FALSE 824 /* 0xEA */ , 0x00 ,FALSE 825 /* 0xEB */ , 0x00 ,FALSE 826 /* 0xEC */ , 0x00 ,FALSE 827 /* 0xED */ , 0x00 ,FALSE 828 /* 0xEE */ , 0x00 ,FALSE 829 /* 0xEF */ , 0x00 ,FALSE 830 /* 0xF0 */ , 0x00 ,FALSE 831 /* 0xF1 */ , 0x00 ,FALSE 832 /* 0xF2 */ , 0x00 ,FALSE 833 /* 0xF3 */ , 0x00 ,FALSE 834 /* 0xF4 */ , 0x00 ,FALSE 835 /* 0xF5 */ , 0x00 ,FALSE 836 /* 0xF6 */ , 0x00 ,FALSE 837 /* 0xF7 */ , 0x00 ,FALSE 838 /* 0xF8 */ , 0x00 ,FALSE 839 /* 0xF9 */ , 0x00 ,FALSE 840 /* 0xFA */ , 0x00 ,FALSE 841 /* 0xFB */ , 0x00 ,FALSE 842 /* 0xFC */ , 0x00 ,FALSE 843 /* 0xFD */ , 0x00 ,FALSE 844 /* 0xFE */ , 0x00 ,FALSE 845 /* 0xFF */ , 0x00 ,FALSE 846 }; 847 848 579 849 //****************************************************************************** 580 850 //****************************************************************************** … … 634 904 BYTE KeyTranslateWinScanToPMScan(BYTE bWinScan, BOOL fExtended) 635 905 { 636 // Mode: translate scancode to vkey 637 BYTE bWinVKey; 638 bWinVKey = MapVirtualKeyA(bWinScan ,3); 639 640 return KeyTranslateWinVKeyToPMScan(bWinVKey, fExtended); 906 // Note: 907 // MapVirtualKeyA requires this function, 908 // O32_MapVirtualKeyA uses PM Scancodes only! 909 910 // if the extended bit didn't match, this is 911 // the closest hit 912 BYTE bAlmost = 0; 913 914 for(int i = 0; 915 i < 256; // sizeof(row of abPMScanToWinVKey) 916 i++) 917 { 918 if (abPMScanToWinScan[i][0] == bWinScan) 919 { 920 // this represents the PMScan code which is used as index 921 bAlmost = i; 922 923 // exact match! 924 if (abPMScanToWinVKey[i][1] == fExtended) 925 break; 926 } 927 } 928 929 dprintf(("KeyTranslateWinScanToPMScan(%02xh,%d) = %02xh", 930 bWinScan, 931 fExtended, 932 bAlmost)); 933 934 // almost a match or no match at all. 935 return bAlmost; 936 641 937 } 642 938 //****************************************************************************** … … 994 1290 // check the scancodes if the extended key bit is set so 995 1291 // we can easily distinguish between "left" and "right" special keys, etc. 996 BOOL fDontCare = (lParam & (1 << 25)) != 0;997 BOOL fExtended = (lParam & (1 << 24)) != 0;1292 BOOL fDontCare = (lParam & 0x02000000) != 0; 1293 BOOL fExtended = (lParam & 0x01000000) != 0; 998 1294 UCHAR ucWinScan = (lParam & 0x00ff0000) >> 16; 999 1295 UCHAR ucWinVKey; 1296 UCHAR ucPMScan; 1000 1297 int result; 1001 1298 1002 1299 if (fDontCare) 1003 1300 { 1301 fExtended = FALSE; 1302 1004 1303 // map "right keys" to "universal keys" 1005 1304 // LALT,RALT -> ALT … … 1009 1308 1010 1309 // Note: Open32 expects PM Scancodes, NOT Winscancodes. 1011 ucWinVKey = MapVirtualKeyA(ucWinScan, 3); 1012 1310 // Note: this is the only way of loss-less conversion! 1311 ucPMScan = KeyTranslateWinScanToPMScan(ucWinScan, fExtended); 1312 dprintf(("ucWinScan=%02xh, fExtended=%d translated to PMscan=%02xh\n", 1313 ucWinScan, 1314 fExtended, 1315 ucPMScan)); 1316 ucWinVKey = abPMScanToWinVKey[ucPMScan][0]; 1317 dprintf(("ucPMScan=%02xh translated to ucWinVKey=%02xh\n", 1318 ucPMScan, 1319 ucWinVKey)); 1320 1013 1321 // Bug in Open32: 1014 1322 // 0 - expects PMScancodes instead of WinScancodes … … 1088 1396 { 1089 1397 dprintf(("imcompletely implemented")); 1398 1090 1399 /* A quick fix for Commandos, very incomplete */ 1091 1400 switch (uMapType) … … 1096 1405 return 'A' + uCode - VK_A; 1097 1406 } 1098 break; 1407 break; 1408 1409 case 1: 1410 case 3: 1411 // Open32 uses PMScancodes, not Windows Scancodes!! 1412 // @@@PH the extended flag is to be ignored! 1413 BYTE bPMScan = KeyTranslateWinScanToPMScan(uCode, FALSE); 1414 return O32_MapVirtualKey(bPMScan, uMapType); 1099 1415 } 1100 1416 return O32_MapVirtualKey(uCode, uMapType);
Note:
See TracChangeset
for help on using the changeset viewer.