An essential registry key, with an even more essential subkey and one of its values (read about registry editing: [VP 1.3]). Plus some mouse settings. In these a lot of how your desktop environment looks and acts is defined, so we're gonna disect them.
Note that most of what's defined here is better controlled with the proper item in your control panel, admin options, group policy, Tweak UI etc. It's just an attempt to localize a few that you need to do yourself, and fully document these keys from our own perspective. Consider this a ‘page in progress’. You'll find a couple of values unexplained yet, there's lots of question marks (someone in Me please test), and while researching we already found some values that might need to be added. Notes:
- indicates it's a string value,
- indicates a dword or binary value.
For some of these you might find a dword instead of a binary value, and vice versa. Not uncommon, and when so, they're probably exchangable, at least if they just toggle some option (0/1), don't store extra information. There's a couple more value types ([VP 1.3]), but not at these keys (so far), so it's safe to use regedit in 2k (more conveniënt as regedt32.exe - in XP regedt32.exe just loads regedit anyway :).
These speak for themselves, I believe, the platforms these values can be found.
Then, times set by some of these values are in milliseconds. 1000 ms equal one second.
Since we're in the ‘current user’ part of registry, it's sufficiënt to log off and in again to get these working, if a change is not effective immediately.
This key could look like this. It probably has much less entries, maybe you can add one or two:
![]() |
Default | (value not set) |
![]() |
ActiveWndTrkTimeout | 00 00 00 00 |
![]() |
||
![]() |
AutoEndTasks | 0 |
![]() |
||
![]() |
CaretWidth | 0x00000001 (1) |
![]() ![]() ![]() ![]() |
||
![]() |
ConvertedWallpaper | path to file |
![]() |
ConvertedWallpaper Last WriteTime | 00 bb 89 b7 60 f0 c4 01 |
![]() |
||
![]() |
CoolSwitch | 1 |
![]() |
CoolSwitchColumns | 7 |
![]() |
CoolSwitchRows | 3 |
![]() |
||
![]() |
CursorBlinkRate | 500 |
![]() |
||
![]() |
DoubleClickHeight | 4 |
![]() |
DoubleClickWidth | 4 |
![]() ![]() |
||
![]() |
DragFullWindows | 1 |
![]() |
||
![]() |
DragHeight | 4 |
![]() |
DragWidth | 4 |
![]() |
||
![]() |
FocusBorderHeight | 0x00000001 (1) |
![]() |
FocusBorderWidth | 0x00000001 (1) |
![]() |
||
![]() |
FontSmoothing | 0 |
![]() |
||
![]() |
FontSmoothingGamma | 0x00000578 (1400) |
![]() |
FontSmoothingOrientation | 0x00000001 (1) |
![]() |
FontSmoothingType | 0x00000001 (1) |
![]() Contrast/gamma correction is set to 1400 by default. Reports say ‘1000’ is more optimized for an lcd screen, while ‘1700’ looks good on a regular flatscreen. The ‘Orientation’ value is only working in XP with servicepack 1 and up. It's there for (rare) monitors with reverse pixel arrangement (BGR instead of RGB) and can be set to ‘0’ in this case. Apply all fontvalues at HKEY_USERS/.DEFAULT/Control Panel/Desktop too to have cleartype fonts on the logon screen too. Tools to find ideal settings are Microsofts’ webbased wizard and ClearTweak (see changes immediately). |
||
![]() |
ForegroundFlashCount | 0x00000003 (3) |
![]() |
ForegroundLockTimeout | 0x00030d40 (200000) |
![]() ForegroundFlashCount defines the number of times the instance of the application in the taskbar will flash when it's being halted. Default is ‘3’, setting to ‘0’ will make it flash infinitely. These are binary values on some Windows versions. |
||
![]() |
GridGranularity | 0 |
![]() |
||
![]() |
HungAppTimeout | 5000 |
![]() |
||
![]() |
IconSpacing | 75 |
![]() |
IconTitleWrap | 1 |
![]() |
IconTitleFaceName | MS Sans Serif |
![]() |
IconTitleSize | 9 |
![]() |
IconTitleStyle | 0 |
![]() |
||
![]() |
LowPowerActive | 0 |
![]() |
LowPowerTimeOut | 0 |
![]() ![]() ![]() |
||
![]() |
MenuDropAlignment | 0 |
![]() |
||
![]() |
MenuShowDelay | 400 |
![]() |
||
![]() |
NoAutoReturnToWelcome | 1 |
![]() |
||
![]() |
OriginalWallpaper | path to image file |
![]() |
||
![]() |
PaintDesktopVersion | 0 |
![]() |
||
![]() |
Pattern | none |
![]() |
||
![]() |
Pattern Upgrade | TRUE |
![]() |
||
![]() |
PowerOffActive | 0 |
![]() |
PowerOffTimeOut | 0 |
![]() ![]() ![]() |
||
![]() |
ScreenSave_Data | 30 34 42 42 32 33 35 4500 |
![]() |
ScreenSaveActive | 1 |
![]() |
ScreenSaveLowPowerActive | 0 |
![]() |
ScreenSaveLowPowerTimeOut | 0 |
![]() |
ScreenSavePowerOffActive | 0 |
![]() |
ScreenSavePowerOffTimeOut | 0 |
![]() |
ScreenSaverIsSecure | 0 |
![]() |
ScreenSaveTimeOut | 900 |
![]() |
ScreenSaveUsePassword | 0x00000000 (0) |
![]() |
SCRNSAVE.EXE | path to .scr file |
![]() ‘ScreenSaveUsePassword’ reflects if a password for screensaver is set (‘0’ is no, ‘1’ is yes), in 9x/Me - password is encrypted and found in ‘ScreenSave_Data’. Equivalent for NT/2k/XP is ‘ScreenSaverIsSecure’, and password data is not here anymore. The 4 (Low)Power strings are 9x (Me ?) equivalents for same values without the ‘ScreenSave’ prefix as used in NT/2k/XP (see above). |
||
![]() |
SmoothScroll | 0x00000001 (1) |
![]() |
||
![]() |
TileWallpaper | 0 |
![]() |
||
![]() |
UserPreference(s)mask | b0 40 01 00 |
![]() |
||
![]() |
WaitToKillAppTimeout | 20000 |
![]() |
||
![]() |
Wallpaper | path to image file |
![]() |
||
![]() |
WallpaperOriginX | 0 |
![]() |
WallpaperOriginY | 0 |
![]() |
||
![]() |
WallpaperStyle | 0 |
![]() |
||
![]() |
WheelScrollLines | 3 |
![]() |
This binary value at HKCU\Control Panel\Desktop\, ‘UserPreference(s)mask’ (name differs for NT/2k/XP - has the ‘s’ there), in hexadecimal format is a great example of what and how can be stored in a small, simple line. Ok, so it's just adding up the hex numbering for each digit and your system is recognizing that, but it's still surprising to find all those display settings in there, efficiëntly stored :) Couldn't resist and tracked down settings stored there. What we found can be done with Tweak UI other tweaking programs ([VP 7.1]), no need to do anything manually (just consider this some fun background info, with a possibility to find some original tweakin’…).
Actually, this is a laymans explanation of what he sees happening. Real explanation would involve a binary sequence with 32 (0-31) bits, set or not set, and a conversion to hex, but this works, so we'll stick to it :).
Now, this hexadecimal stuff. Like binary counts in 0 and 1 only, and we're used to numbers 0-9 (decimal), hexadecimal numbered stuff uses 16 digits (0-9 and counting further with a-f), from 0-f. Converted to decimal, ‘c’ really is 12, and ‘f’ is 15. Confusing maybe if you are gonna use numbers like 200 (which has 12 times 16, so starts with c, and 8 more, so it's c8. Etc.) But for this value each digit stands alone and can only go up to ‘f’. So, 16 possible numbers for each digit. Still, how would your system know what ‘a’ (10) means ? Just 10, or an addition of 5+2+3 or 4+6 ? So, there's not stored 16 different settings there, but just 4. Using only 1, 2, 4 and 8 every number can only have one explanation. Example, if one digit is set to ‘d’, it can only be the case if settings 1, 4 and 8 are set.
[9x] | [Me] | [2k] | [XP] | ‘Gradiënt captions enabled’ | : | 10 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Always show keyboard indicators’ | : | 20 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Autoraise when activating’ | : | 40 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Mouse hot tracking effects’ | : | 80 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Activation follows X-mouse’ | : | 01 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Menu animation’ | : | 02 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Combobox animation’ | : | 04 00 00 00 |
[9x] | [Me] | [2k] | [XP] | ‘Listbox animation’ | : | 08 00 00 00 |
[2k] | [XP] | ‘Tooltip fade’ | : | 00 10 00 00 | ||
[2k] | [XP] | ‘Cursor shadow’ | : | 00 20 00 00 | ||
[Me] | [XP] | ‘Show position cursor when pressing CTRL’ | : | 00 40 00 00 | ||
[Me] | [XP] | ‘Clicklock function’ | : | 00 80 00 00 | ||
[2k] | [XP] | ‘Menu fading’ | : | 00 02 00 00 | ||
[2k] | [XP] | ‘Menu selection fading’ | : | 00 04 00 00 | ||
[2k] | [XP] | ‘Tooltip animation’ | : | 00 08 00 00 | ||
[Me] | [XP] | ‘Hide cursor while typing’ | : | 00 00 01 00 | ||
[XP] | ‘Use visual styles on windows and buttons’ | : | 00 00 02 00 | |||
[XP] | ‘Show shadows under menus’ | : | 00 00 04 00 | |||
[2k] | [XP] | ‘UI effects’ (all effects available through UI enabled) | : | 00 00 00 80 |
Above are the settings tracked down so far, most accessible with Tweak UI and the mouse control item in your control panel. In XP, some are found under your system properties (control panel) applet, advanced tab, performance dialog. There's room for 32 settings, but not all room may have been used. MSDN mentions most settings as “reserved for future use”, though Me already took 3 of those, XP some more, so guess the list for 9x/2k is complete. If you know about more settings in Me/XP, please tell us. Now this value reads ‘3e 40 01 00’ here, in Me. This can only mean these settings are set:
‘Gradiënt captions enabled’ | : | 10 00 00 00 | |
‘Always show keyboard indicators’ | : | 20 00 00 00 | |
‘Menu animation’ | : | 02 00 00 00 | |
‘Combobox animation’ | : | 04 00 00 00 | |
‘Listbox animation’ | : | 08 00 00 00 | |
‘Show position cursor when pressing CTRL’ | : | 00 40 00 00 | |
‘Hide cursor while typing’ | : | 00 00 01 00 | |
+ | |||
3e 40 01 00 |
In 2k and XP you have the option to choose menu appearing effects (2k, display properties/effects tab, XP, appearance tab/effects button). Also reported is the button being disabled in XP. When you'd want no effects, there's the dword value ‘Smoothscroll’ as mentioned above. Set to 0x00000000 (0) to have no effects. But if you want one of two available effects and set the value to 0x00000001 (1), the choice is stored here.
If you want the ‘Fade’ effect, the above settings ‘Menu selection fading’ and ‘Tooltip animation’ are set for that, so 4 + 8 need to be added to 4th digit. The ‘Scroll’ effect is a little more complictaed, it does set the ‘Tooltip animation’ (so adds 8), but also disables ‘Menu fading’ (-2) and ‘Menu selection fading’ (-4), if they were set before. Usually that should mean 4th digit = 8. But it also disables ‘Tooltip fade’, thus decreases 3rd digit with 1…
Here's where most of the actual size and related settings for the user interface are set. Lots of these are ‘linked’ to eachother. That is, almost everything can be changed at your display properties, appearance tab (XP: advanced button), but not all seperately. Related width and height properties have usually a 50:50 ratio, and font(size) changes may affect some height settings too etc. Well, here you can change settings without that ratio being applied, but be aware later changes at display properties usually set proportions back (…).
Sizes here, having a minus sign before them, are in twips. A twip is 1/1440th of an inch, 1/567th of a centimeter and 1/20th of a point. As it's an absolute measurement, it can't be converted exactly to pixels. A pixel being a dot that represents the smallest graphical unit of measurement on a screen, is screen-dependent; that is, dimensions of screen elements vary with differing hardware and resolution… depending on context, we've seen estimations ranging from 15 to 22 twips in a pixel mentioned.
That being the theory, if we just look at string values here, calculate with a pixel being 15 twips and you're close at least. Easy tool to do the conversion is TwipIt.
Another observation though. While Windows writes all this in twips, if you remove the minus sign, these values are interpreted as pixels, instead of twips. Wether you enter ‘5’, or ‘-75’, it has the same result (note: we only tested that at values at this key (!)).
![]() |
Default | (value not set) |
![]() |
AppliedDPI | 0x00000060 (96) |
![]() |
||
![]() |
BorderWidth | -15 |
![]() |
||
![]() |
CaptionFont | 0a 00 00 00 etc. |
![]() |
||
![]() |
CaptionHeight | -270 |
![]() |
CaptionWidth | -270 |
![]() |
||
![]() |
IconFont | 0a 00 00 00 etc. |
![]() |
||
![]() |
IconSpacing | -1125 |
![]() |
||
![]() |
IconSpacingFactor | 130 |
![]() ![]() |
||
![]() |
IconTitleStyle | 0 |
![]() |
||
![]() |
IconTitleWrap | 1 |
![]() |
||
![]() |
IconVerticalSpacing | -1125 |
![]() |
||
![]() |
MenuFont | 0a 00 00 00 etc. |
![]() |
||
![]() |
MenuHeight | -270 |
![]() |
MenuWidth | -270 |
![]() |
||
![]() |
MessageFont | 0a 00 00 00 etc. |
![]() |
||
![]() |
MinAnimate | 1 |
![]() |
||
![]() |
MinWidth | -2310 |
![]() |
||
![]() |
ScrollHeight | -240 |
![]() |
ScrollWidth | -240 |
![]() |
||
![]() |
Shell Icon BPP | 16 |
![]() |
||
![]() |
Shell Icon Size | 32 |
![]() |
||
![]() |
Shell Small Icon Size | 16 |
![]() |
||
![]() |
SmCaptionFont | 0a 00 00 00 etc. |
![]() |
||
![]() |
SmCaptionHeight | -225 |
![]() |
SmCaptionWidth | -225 |
![]() |
||
![]() |
StatusFont | 0a 00 00 00 etc. |
![]() |
This key, HKEY_CURRENT_USER\Control Panel\Mouse, is only here by default in NT, 2k and XP. For 9x/Me you might need to add it, or mouse applet will add it for you. We still need to review what might work at HKEY_CURRENT_USER\Control Panel\Microsoft Input Devices\Mouse and even in old .ini's (win.ini and system.ini) on older systems:
![]() |
Default | (value not set) |
![]() |
ActiveWindowTracking | 0x00000000 (0) |
![]() |
||
![]() |
DoubleClickHeight | 4 |
![]() |
DoubleClickSpeed | 500 |
![]() |
DoubleClickWidth | 4 |
![]() ![]() ![]() DoubleClickSpeed is only available/working on these platforms and defines time allowed between two clicks to be recognized as a doubleclick, in milliseconds. Dialog at mouse properties allows settings ranging from 100 to 900 in 2k. XP dialog is more smart and starts at 200 (try to achieve at doubleclick in 1/10th of a second :). |
||
![]() |
MouseSensitivity | 10 |
![]() ![]() ![]() |
||
![]() |
MouseSpeed | 1 |
![]() |
MouseThreshold1 | 6 |
![]() |
MouseThreshold2 | 10 |
![]() ‘MouseSpeed’ has got 3 available options to set to (with checkbox checked, 3 presets are written here, but here you can define them more precise). ‘0’ defines there will be no increase/acceleration in mouse speed when moving (regular speed for 9x, speed defined at MouseSensitivity for 2k/XP). ‘1’ defines that when the cursor is moved the amount of pixels as found in MouseThreshold1, mouse speed will be doubled. By default max is 10, but you can set it higher here. ‘2’ defines that when the cursor is moved the amount of pixels as found in MouseThreshold1, mouse speed will be doubled. Then, when moved amount of pixels as found in MouseThreshold2 speed will be quadrupled (doubled again). |
||
![]() |
MouseTrails | 0 |
![]() |
||
![]() |
SmoothMouseXCurve | 00 00 00 00 00 etc. |
![]() |
SmoothMouseYCurve | 00 00 00 00 00 etc. |
![]() |
||
![]() |
SnapToDefaultButton | 0 |
![]() ![]() ![]() |
||
![]() |
SwapMouseButtons | 0 |
![]() |