Ignore:
Timestamp:
Feb 16, 2003, 7:29:27 PM (23 years ago)
Author:
sandervl
Message:

Do not translate WM_KEYUP to WM_SYSKEYUP if AltGr released and KC_LONEKEY flag is set. (only for Alt); GetKeyboardState, GetKeyState, GetAsyncKeyState: pretend left Ctrl key is pressed if AltGr down

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/oslibmsgtranslate.cpp

    r9792 r9814  
    1 /* $Id: oslibmsgtranslate.cpp,v 1.101 2003-02-13 10:34:48 sandervl Exp $ */
     1/* $Id: oslibmsgtranslate.cpp,v 1.102 2003-02-16 18:29:26 sandervl Exp $ */
    22/*
    33 * Window message translation functions for OS/2
     
    602602        break;
    603603    }
     604
     605    case WM_CHAR_SPECIAL_ALTGRCONTROL:
     606    {
     607        // special char message from the keyboard hook
     608        dprintf(("PM: WM_CHAR_SPECIAL_ALTGRCONTROL"));
     609       
     610      // NO BREAK! FALLTHRU CASE!
     611    }
    604612     
    605613    case WM_CHAR_SPECIAL:
     
    607615        // @@@PH
    608616        // special char message from the keyboard hook
    609         dprintf(("PM: WM_CHAR_SPECIAL\n"));
     617        if(os2Msg->msg == WM_CHAR_SPECIAL) {
     618            dprintf(("PM: WM_CHAR_SPECIAL"));
     619        }
    610620       
    611621      // NO BREAK! FALLTHRU CASE!
     
    689699          {
    690700            // check for a lonesome ALT key ...
     701            // SvL: Only Left Alt; AltGr generates a WM_KEYUP when released
    691702            if ( (flags & KC_LONEKEY) &&
    692                 ((winMsg->wParam == VK_LMENU_W) || (winMsg->wParam == VK_RMENU_W)) )
     703                (winMsg->wParam == VK_LMENU_W) )
    693704            {
    694705              winMsg->message = WINWM_SYSKEYUP;
     
    751762          }
    752763          // if right alt is down, then we need to set the alt down bit too
    753           if (WinGetKeyState(HWND_DESKTOP, VK_ALTGRAF) & 0x8000) {
     764          // except for the fake Ctrl WM_CHAR sent for AltGr emulation
     765          if (os2Msg->msg != WM_CHAR_SPECIAL_ALTGRCONTROL &&
     766              (WinGetKeyState(HWND_DESKTOP, VK_ALTGRAF) & 0x8000))
     767          {
    754768              winMsg->lParam |= WIN_KEY_ALTHELD;           
    755769          }
     
    781795          }
    782796        }
     797#if 0
     798        //
     799        // AltGr needs special handling
     800        //
     801        // AltGr -> WM_KEYDOWN (VK_CONTROL), WM_KEYDOWN (VK_MENU)
     802        //          WM_SYSKEYUP (VK_CONTROL)
     803        //          WM_KEYUP (VK_MENU)
     804        //
     805        // Ctrl+AltGr -> WM_KEYDOWN (VK_CONTROL), WM_KEYUP (VK_CONTROL)
     806        //               WM_KEYDOWN (VK_MENU)
     807        //               WM_KEYUP (VK_MENU)
     808        //               WM_KEYUP (VK_CONTROL)
     809        //
     810        // AltGr+Ctrl -> WM_KEYDOWN (VK_CONTROL), WM_KEYDOWN (VK_MENU)
     811        //               WM_KEYDOWN (VK_CONTROL)
     812        //               WM_SYSKEYUP (VK_CONTROL)
     813        //               WM_SYSKEYUP (VK_CONTROL)
     814        //               WM_KEYUP (VK_MENU)
     815        //
     816        // AltGr down -> if Ctrl down, send WM_KEYUP (VK_CONTROL)
     817        //               endif
     818        //               Send WM_KEYDOWN (VK_CONTROL)
     819        //               Send WM_KEYDOWN (VK_MENU)
     820        // AltGr up ->   if !(Ctrl down before AltGr was pressed || Ctrl up)
     821        //                   Send WM_SYSKEYUP (VK_CONTROL)
     822        //               endif
     823        //               Send WM_KEYDOWN (VK_MENU)
     824        //
     825        if(winMsg->wParam == VK_MENU_W && (winMsg->lParam & WIN_KEY_EXTENDED))
     826        {//AltGr
     827            if(GetKeyState(VK_CONTROL_W) & 0x8000)
     828            {//Ctrl key pressed, send WM_KEYUP
     829           
     830            }
     831        }
     832#endif
     833
    783834        //After SetFocus(0), all keystrokes are converted in WM_SYS*
    784835        if(fIgnoreKeystrokes) {
Note: See TracChangeset for help on using the changeset viewer.