From fca0dabc2dc2687fe4caeb140fbf7455cd8b96c4 Mon Sep 17 00:00:00 2001 From: Matthias Kupfer Date: Mon, 5 Oct 2009 19:53:15 +0000 Subject: [PATCH] - add new desktop and mouse property keys to registry - disable global settings from _SYSTEM_CURSORINFO and change files accordingly - bind and load added registry keys for SystemParametersInfo - TODO: read and set via SystemParametersInfo still incomplete svn path=/trunk/; revision=43307 --- reactos/boot/bootdata/hivedef_arm.inf | 25 ++++++++++++++ reactos/boot/bootdata/hivedef_i386.inf | 10 +++++- .../win32/win32k/include/cursoricon.h | 15 +++++---- .../subsystems/win32/win32k/ntuser/metric.c | 6 ++-- .../subsystems/win32/win32k/ntuser/msgqueue.c | 6 ++-- .../win32/win32k/ntuser/sysparams.c | 31 ++++++++++------- .../subsystems/win32/win32k/ntuser/winsta.c | 33 ++++++++++--------- 7 files changed, 85 insertions(+), 41 deletions(-) diff --git a/reactos/boot/bootdata/hivedef_arm.inf b/reactos/boot/bootdata/hivedef_arm.inf index 1cd697ddb8c..fb28b85fe5d 100644 --- a/reactos/boot/bootdata/hivedef_arm.inf +++ b/reactos/boot/bootdata/hivedef_arm.inf @@ -13,6 +13,12 @@ HKCU,"Control Panel\Mouse","MouseThreshold1",0x00000002,"6" HKCU,"Control Panel\Mouse","MouseThreshold2",0x00000002,"10" HKCU,"Control Panel\Mouse","DoubleClickSpeed",0x00000002,"480" HKCU,"Control Panel\Mouse","SwapMouseButtons",0x00000002,"0" +HKCU,"Control Panel\Mouse","MouseSensitivity",0x00000002,"10" +HKCU,"Control Panel\Mouse","MouseHoverTime",0x00000002,"400" +HKCU,"Control Panel\Mouse","MouseHoverWidth",0x00000002,"4" +HKCU,"Control Panel\Mouse","MouseHoverHeight",0x00000002,"4" +HKCU,"Control Panel\Mouse","DoubleClickWidth",0x00000002,"4" +HKCU,"Control Panel\Mouse","DoubleClickHeight",0x00000002,"4" HKCU,"Control Panel\Desktop","AutoEndTasks",0x00000002,"0" HKCU,"Control Panel\Desktop","CursorBlinkRate",0x00000002,"530" @@ -22,6 +28,25 @@ HKCU,"Control Panel\Desktop","HungAppTimeout",0x00000002,"5000" HKCU,"Control Panel\Desktop","SCRNSAVE.EXE",0x00000000,"" HKCU,"Control Panel\Desktop","WaitToKillAppTimeout",0x00000002,"20000" HKCU,"Control Panel\Desktop","Wallpaper",0x00000000,"" +HKCU,"Control Panel\Desktop","FontSmoothing",2,"0" +HKCU,"Control Panel\Desktop","SmoothScroll",3,00,00,00,00 +HKCU,"Control Panel\Desktop","UserPreferenceMask",3,10,00,00,80 +HKCU,"Control Panel\Desktop","LowPowerActive",,"0" +HKCU,"Control Panel\Desktop","MenuShowDelay",2,"400" +HKCU,"Control Panel\Desktop","WheelScrollLines",2,"3" +HKCU,"Control Panel\Desktop","WheelScrollChars",2,"3" + +HKCU,"Control Panel\Desktop\WindowMetrics","ScrollWidth",2,"16" +HKCU,"Control Panel\Desktop\WindowMetrics","ScrollHeight",2,"16" +HKCU,"Control Panel\Desktop\WindowMetrics","CaptionWidth",2,"18" +HKCU,"Control Panel\Desktop\WindowMetrics","CaptionHeight",2,"18" +HKCU,"Control Panel\Desktop\WindowMetrics","SmCaptionWidth",2,"13" +HKCU,"Control Panel\Desktop\WindowMetrics","SmCaptionHeight",2,"15" +HKCU,"Control Panel\Desktop\WindowMetrics","MenuWidth",2,"18" +HKCU,"Control Panel\Desktop\WindowMetrics","MenuHeight",2,"18" +HKCU,"Control Panel\Desktop\WindowMetrics","BorderWidth",2,"1" +HKCU,"Control Panel\Desktop\WindowMetrics","Shell Icon Size",2,"32" + HKCU,"Control Panel\International",,0x00000012 HKCU,"Control Panel\International","Locale",0x00000000,"0409" HKCU,"Control Panel\International\Geo","Nation",0x00000000,"1" diff --git a/reactos/boot/bootdata/hivedef_i386.inf b/reactos/boot/bootdata/hivedef_i386.inf index 6d708632739..4346cb62968 100644 --- a/reactos/boot/bootdata/hivedef_i386.inf +++ b/reactos/boot/bootdata/hivedef_i386.inf @@ -11,8 +11,14 @@ HKCU,"Control Panel\Mouse","SnapToDefaultButton",0x00000002,"0" HKCU,"Control Panel\Mouse","MouseSpeed",0x00000002,"1" HKCU,"Control Panel\Mouse","MouseThreshold1",0x00000002,"6" HKCU,"Control Panel\Mouse","MouseThreshold2",0x00000002,"10" -HKCU,"Control Panel\Mouse","DoubleClickSpeed",0x00000002,"480" +HKCU,"Control Panel\Mouse","DoubleClickSpeed",0x00000002,"500" HKCU,"Control Panel\Mouse","SwapMouseButtons",0x00000002,"0" +HKCU,"Control Panel\Mouse","MouseSensitivity",0x00000002,"10" +HKCU,"Control Panel\Mouse","MouseHoverTime",0x00000002,"400" +HKCU,"Control Panel\Mouse","MouseHoverWidth",0x00000002,"4" +HKCU,"Control Panel\Mouse","MouseHoverHeight",0x00000002,"4" +HKCU,"Control Panel\Mouse","DoubleClickWidth",0x00000002,"4" +HKCU,"Control Panel\Mouse","DoubleClickHeight",0x00000002,"4" HKCU,"Control Panel\Desktop","AutoEndTasks",0x00000002,"0" HKCU,"Control Panel\Desktop","CursorBlinkRate",0x00000002,"530" @@ -27,6 +33,8 @@ HKCU,"Control Panel\Desktop","SmoothScroll",3,00,00,00,00 HKCU,"Control Panel\Desktop","UserPreferenceMask",3,10,00,00,80 HKCU,"Control Panel\Desktop","LowPowerActive",,"0" HKCU,"Control Panel\Desktop","MenuShowDelay",2,"400" +HKCU,"Control Panel\Desktop","WheelScrollLines",2,"3" +HKCU,"Control Panel\Desktop","WheelScrollChars",2,"3" HKCU,"Control Panel\Desktop\WindowMetrics","ScrollWidth",2,"16" HKCU,"Control Panel\Desktop\WindowMetrics","ScrollHeight",2,"16" diff --git a/reactos/subsystems/win32/win32k/include/cursoricon.h b/reactos/subsystems/win32/win32k/include/cursoricon.h index 5e31b1fc414..ffe3fef681a 100644 --- a/reactos/subsystems/win32/win32k/include/cursoricon.h +++ b/reactos/subsystems/win32/win32k/include/cursoricon.h @@ -41,14 +41,15 @@ typedef struct _CURSORACCELERATION_INFO typedef struct _SYSTEM_CURSORINFO { BOOL Enabled; - BOOL SwapButtons;// +// BOOL SwapButtons; UINT ButtonsDown; CURSORCLIP_INFO CursorClipInfo; PCURICON_OBJECT CurrentCursorObject; -// UINT WheelScroLines; -// UINT WheelScroChars; BYTE ShowingCursor; - UINT DblClickSpeed;// +/* + UINT WheelScroLines; + UINT WheelScroChars; + UINT DblClickSpeed; UINT DblClickWidth; UINT DblClickHeight; @@ -56,9 +57,9 @@ typedef struct _SYSTEM_CURSORINFO UINT MouseHoverWidth; UINT MouseHoverHeight; -// UINT MouseSpeed; -// CURSORACCELERATION_INFO CursorAccelerationInfo; - + UINT MouseSpeed; + CURSORACCELERATION_INFO CursorAccelerationInfo; +*/ DWORD LastBtnDown; LONG LastBtnDownX; LONG LastBtnDownY; diff --git a/reactos/subsystems/win32/win32k/ntuser/metric.c b/reactos/subsystems/win32/win32k/ntuser/metric.c index a2fc4b96678..daf547d8f56 100644 --- a/reactos/subsystems/win32/win32k/ntuser/metric.c +++ b/reactos/subsystems/win32/win32k/ntuser/metric.c @@ -133,9 +133,9 @@ InitMetrics(VOID) piSysMet[SM_MOUSEPRESENT] = 1; piSysMet[SM_MOUSEWHEELPRESENT] = 1; piSysMet[SM_CMOUSEBUTTONS] = 2; - piSysMet[SM_SWAPBUTTON] = gspv.bMouseBtnSwap ? 1 : 0; //CurInfo ? CurInfo->SwapButtons : 0; - piSysMet[SM_CXDOUBLECLK] = gspv.iDblClickWidth;//CurInfo ? CurInfo->DblClickWidth : 4; - piSysMet[SM_CYDOUBLECLK] = gspv.iDblClickHeight;//CurInfo ? CurInfo->DblClickWidth : 4; + piSysMet[SM_SWAPBUTTON] = gspv.bMouseBtnSwap ? 1 : 0; + piSysMet[SM_CXDOUBLECLK] = gspv.iDblClickWidth; + piSysMet[SM_CYDOUBLECLK] = gspv.iDblClickHeight; #if (_WIN32_WINNT >= 0x0600) piSysMet[SM_MOUSEHORIZONTALWHEELPRESENT] = 0; #endif diff --git a/reactos/subsystems/win32/win32k/ntuser/msgqueue.c b/reactos/subsystems/win32/win32k/ntuser/msgqueue.c index 77d1ef44968..db9a1c875f0 100644 --- a/reactos/subsystems/win32/win32k/ntuser/msgqueue.c +++ b/reactos/subsystems/win32/win32k/ntuser/msgqueue.c @@ -251,7 +251,7 @@ MsqIsDblClk(LPMSG Msg, BOOL Remove) CurInfo = IntGetSysCursorInfo(WinStaObject); Res = (Msg->hwnd == (HWND)CurInfo->LastClkWnd) && - ((Msg->time - CurInfo->LastBtnDown) < CurInfo->DblClickSpeed); + ((Msg->time - CurInfo->LastBtnDown) < gspv.iDblClickTime); if(Res) { @@ -262,8 +262,8 @@ MsqIsDblClk(LPMSG Msg, BOOL Remove) if(dY < 0) dY = -dY; - Res = (dX <= CurInfo->DblClickWidth) && - (dY <= CurInfo->DblClickHeight); + Res = (dX <= gspv.iDblClickWidth) && + (dY <= gspv.iDblClickHeight); if(Res) { diff --git a/reactos/subsystems/win32/win32k/ntuser/sysparams.c b/reactos/subsystems/win32/win32k/ntuser/sysparams.c index 89d7a7e0f46..9c054d19886 100644 --- a/reactos/subsystems/win32/win32k/ntuser/sysparams.c +++ b/reactos/subsystems/win32/win32k/ntuser/sysparams.c @@ -52,6 +52,10 @@ static const WCHAR* VAL_DBLCLKHEIGHT = L"DoubleClickHeight"; static const WCHAR* VAL_DBLCLKTIME = L"DoubleClickSpeed"; static const WCHAR* VAL_SNAPDEFBTN = L"SnapToDefaultButton"; static const WCHAR* VAL_SWAP = L"SwapMouseButtons"; +static const WCHAR* VAL_HOVERTIME = L"MouseHoverTime"; +static const WCHAR* VAL_HOVERWIDTH = L"MouseHoverWidth"; +static const WCHAR* VAL_HOVERHEIGHT = L"MouseHoverHeight"; +//static const WCHAR* VAL_SENSITIVITY = L"MouseSensitivity"; static const WCHAR* KEY_DESKTOP = L"Control Panel\\Desktop"; static const WCHAR* VAL_SCRTO = L"ScreenSaveTimeOut"; @@ -61,6 +65,10 @@ static const WCHAR* VAL_DRAG = L"DragFullWindows"; static const WCHAR* VAL_DRAGHEIGHT = L"DragHeight"; static const WCHAR* VAL_DRAGWIDTH = L"DragWidth"; static const WCHAR* VAL_FNTSMOOTH = L"FontSmoothing"; +static const WCHAR* VAL_SCRLLLINES = L"WheelScrollLines"; +#if (_WIN32_WINNT >= 0x0600) +static const WCHAR* VAL_SCRLLCHARS = L"WheelScrollChars"; +#endif static const WCHAR* KEY_MDALIGN = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"; static const WCHAR* VAL_MDALIGN = L"MenuDropAlignment"; @@ -179,14 +187,16 @@ SpiUpdatePerUserSystemParameters() /* Load mouse settings */ gspv.caiMouse.FirstThreshold = SpiLoadMouse(VAL_MOUSE1, 6); gspv.caiMouse.SecondThreshold = SpiLoadMouse(VAL_MOUSE2, 10); - gspv.caiMouse.Acceleration = SpiLoadMouse(VAL_MOUSE3, 1); + gspv.caiMouse.Acceleration = gspv.iMouseSpeed = SpiLoadMouse(VAL_MOUSE3, 1); gspv.bMouseBtnSwap = SpiLoadMouse(VAL_SWAP, 0); gspv.bSnapToDefBtn = SpiLoadMouse(VAL_SNAPDEFBTN, 0); gspv.iMouseTrails = SpiLoadMouse(VAL_MOUSETRAILS, 0); - gspv.iMouseSpeed = SpiLoadMouse(VAL_MOUSE3, 1); - gspv.iDblClickTime = SpiLoadMouse(VAL_DBLCLKTIME, 480); + gspv.iDblClickTime = SpiLoadMouse(VAL_DBLCLKTIME, 500); gspv.iDblClickWidth = SpiLoadMouse(VAL_DBLCLKWIDTH, 4); gspv.iDblClickHeight = SpiLoadMouse(VAL_DBLCLKHEIGHT, 4); + gspv.iMouseHoverTime = SpiLoadMouse(VAL_HOVERTIME, 400); + gspv.iMouseHoverWidth = SpiLoadMouse(VAL_HOVERWIDTH, 4); + gspv.iMouseHoverHeight = SpiLoadMouse(VAL_HOVERHEIGHT, 4); /* Load NONCLIENTMETRICS */ gspv.ncm.cbSize = sizeof(NONCLIENTMETRICSW); @@ -224,15 +234,12 @@ SpiUpdatePerUserSystemParameters() /* Load desktop settings */ gspv.bDragFullWindows = SpiLoadInt(KEY_DESKTOP, VAL_DRAG, 0); + gspv.iWheelScrollLines = SpiLoadInt(KEY_DESKTOP, VAL_SCRLLLINES, 3); +#if (_WIN32_WINNT >= 0x0600) + gspv.iWheelScrollChars = SpiLoadInt(KEY_DESKTOP, VAL_SCRLLCHARS, 3); +#endif /* Some hardcoded values for now */ - gspv.iMouseHoverTime = 80; - gspv.iMouseHoverWidth = 4; - gspv.iMouseHoverHeight = 4; - gspv.iWheelScrollLines = 3; -#if (_WIN32_WINNT >= 0x0600) - gspv.uiWheelScrollChars = 1; -#endif gspv.tmCaptionFont.tmAveCharWidth = 6; gspv.bBeep = TRUE; @@ -1083,13 +1090,13 @@ SpiGetSet(UINT uiAction, UINT uiParam, PVOID pvParam, FLONG fl) return SpiGetInt(pvParam, &gspv.iMouseTrails, fl); case SPI_SETMOUSETRAILS: - return SpiSetInt(&gspv.iMouseTrails, uiParam, KEY_MOUSE, L"MouseTrails", fl); + return SpiSetInt(&gspv.iMouseTrails, uiParam, KEY_MOUSE, VAL_MOUSETRAILS, fl); case SPI_GETSNAPTODEFBUTTON: return SpiGetInt(pvParam, &gspv.bSnapToDefBtn, fl); case SPI_SETSNAPTODEFBUTTON: - return SpiSetBool(&gspv.bSnapToDefBtn, uiParam, KEY_MOUSE, L"SnapToDefaultButton", fl); + return SpiSetBool(&gspv.bSnapToDefBtn, uiParam, KEY_MOUSE, VAL_SNAPDEFBTN, fl); case SPI_GETMOUSEHOVERWIDTH: return SpiGetInt(pvParam, &gspv.iMouseHoverWidth, fl); diff --git a/reactos/subsystems/win32/win32k/ntuser/winsta.c b/reactos/subsystems/win32/win32k/ntuser/winsta.c index 39191009bda..054fd85437b 100644 --- a/reactos/subsystems/win32/win32k/ntuser/winsta.c +++ b/reactos/subsystems/win32/win32k/ntuser/winsta.c @@ -538,23 +538,26 @@ NtUserCreateWindowStation( CurInfo->CurrentCursorObject = NULL; CurInfo->ShowingCursor = 0; - /* FIXME: Obtain the following information from the registry */ +/* + // not used anymore + CurInfo->WheelScroLines = gspv.iWheelScrollLines; +#if (_WIN32_WINNT >= 0x0600) + CurInfo->WheelScroChars = gspv.iWheelScrollChars; +#endif + CurInfo->SwapButtons = gspv.bMouseBtnSwap; + CurInfo->DblClickSpeed = gspv.iDblClickTime; + CurInfo->DblClickWidth = gspv.iDblClickWidth; + CurInfo->DblClickHeight = gspv.iDblClickHeight; -// CurInfo->WheelScroLines = 3; -// CurInfo->WheelScroChars = 3; - CurInfo->SwapButtons = FALSE; - CurInfo->DblClickSpeed = 500; - CurInfo->DblClickWidth = 4; - CurInfo->DblClickHeight = 4; + CurInfo->MouseSpeed = gspv.iMouseSpeed; + CurInfo->CursorAccelerationInfo.FirstThreshold = gspv.caiMouse.FirstThreshold; + CurInfo->CursorAccelerationInfo.SecondThreshold = gspv.caiMouse.SecondThreshold; + CurInfo->CursorAccelerationInfo.Acceleration = gspv.caiMouse.Acceleration; -// CurInfo->MouseSpeed = 10; -// CurInfo->CursorAccelerationInfo.FirstThreshold = 6; -// CurInfo->CursorAccelerationInfo.SecondThreshold = 10; -// CurInfo->CursorAccelerationInfo.Acceleration = 1; - -// CurInfo->MouseHoverTime = 80; -// CurInfo->MouseHoverWidth = 4; -// CurInfo->MouseHoverHeight = 4; + CurInfo->MouseHoverTime = gspv.iMouseHoverTime; + CurInfo->MouseHoverWidth = gspv.iMouseHoverWidth; + CurInfo->MouseHoverHeight = gspv.iMouseHoverHeight; +*/ // WindowStationObject->ScreenSaverActive = FALSE; // WindowStationObject->ScreenSaverTimeOut = 10;