From 9d10da4b3a7473faca2e5f43b41a6b7627438893 Mon Sep 17 00:00:00 2001 From: Nathan Gill Date: Sun, 22 Dec 2024 09:51:08 +0000 Subject: [PATCH 1/3] Added angle units to PowerToys Run Calculator plugin. --- .../ExtendedCalculatorParserTests.cs | 62 +++++++++++++ .../CalculateEngine.cs | 10 +++ .../CalculateHelper.cs | 86 +++++++++++++++++++ .../Main.cs | 26 ++++++ .../Properties/Resources.Designer.cs | 45 ++++++++++ .../Properties/Resources.resx | 20 +++++ 6 files changed, 249 insertions(+) diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest/ExtendedCalculatorParserTests.cs b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest/ExtendedCalculatorParserTests.cs index 3c61e966be3b..249a9e7e3e44 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest/ExtendedCalculatorParserTests.cs +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest/ExtendedCalculatorParserTests.cs @@ -271,5 +271,67 @@ public void Interpret_TestScientificNotation_WhenCalled(string input, string sou Assert.IsNotNull(result); Assert.AreEqual(expectedResult, result.Result); } + + [DataTestMethod] + [DataRow("sin(90)", "sin((pi / 180) * (90))")] + [DataRow("arcsin(0.5)", "(180 / pi) * (arcsin(0.5))")] + [DataRow("sin(sin(30))", "sin((pi / 180) * (sin((pi / 180) * (30))))")] + [DataRow("cos(tan(45))", "cos((pi / 180) * (tan((pi / 180) * (45))))")] + [DataRow("arctan(sin(30))", "(180 / pi) * (arctan(sin((pi / 180) * (30))))")] + [DataRow("sin(cos(tan(30)))", "sin((pi / 180) * (cos((pi / 180) * (tan((pi / 180) * (30))))))")] + [DataRow("sin(arcsin(0.5))", "sin((pi / 180) * ((180 / pi) * (arcsin(0.5))))")] + [DataRow("sin(30) + cos(60)", "sin((pi / 180) * (30)) + cos((pi / 180) * (60))")] + [DataRow("sin(30 + 15)", "sin((pi / 180) * (30 + 15))")] + [DataRow("sin(45) * cos(45) - tan(30)", "sin((pi / 180) * (45)) * cos((pi / 180) * (45)) - tan((pi / 180) * (30))")] + [DataRow("arcsin(arccos(0.5))", "(180 / pi) * (arcsin((180 / pi) * (arccos(0.5))))")] + [DataRow("sin(sin(sin(30)))", "sin((pi / 180) * (sin((pi / 180) * (sin((pi / 180) * (30))))))")] + [DataRow("log(10)", "log(10)")] + [DataRow("sin(30) + pi", "sin((pi / 180) * (30)) + pi")] + [DataRow("sin(-30)", "sin((pi / 180) * (-30))")] + [DataRow("sin((30))", "sin((pi / 180) * ((30)))")] + [DataRow("arcsin(1) * 2", "(180 / pi) * (arcsin(1)) * 2")] + [DataRow("cos(1/2)", "cos((pi / 180) * (1/2))")] + [DataRow("sin ( 90 )", "sin ((pi / 180) * ( 90 ))")] + [DataRow("cos(arcsin(sin(45)))", "cos((pi / 180) * ((180 / pi) * (arcsin(sin((pi / 180) * (45))))))")] + public void UpdateTrigFunctions_Degrees(string input, string expectedResult) + { + // Call UpdateTrigFunctions in degrees mode + string result = CalculateHelper.UpdateTrigFunctions(input, CalculateEngine.TrigMode.Degrees); + + // Assert + Assert.IsNotNull(result); + Assert.AreEqual(expectedResult, result); + } + + [DataTestMethod] + [DataRow("sin(90)", "sin((pi / 200) * (90))")] + [DataRow("arcsin(0.5)", "(200 / pi) * (arcsin(0.5))")] + [DataRow("sin(sin(30))", "sin((pi / 200) * (sin((pi / 200) * (30))))")] + [DataRow("cos(tan(45))", "cos((pi / 200) * (tan((pi / 200) * (45))))")] + [DataRow("arctan(sin(30))", "(200 / pi) * (arctan(sin((pi / 200) * (30))))")] + [DataRow("sin(cos(tan(30)))", "sin((pi / 200) * (cos((pi / 200) * (tan((pi / 200) * (30))))))")] + [DataRow("sin(arcsin(0.5))", "sin((pi / 200) * ((200 / pi) * (arcsin(0.5))))")] + [DataRow("sin(30) + cos(60)", "sin((pi / 200) * (30)) + cos((pi / 200) * (60))")] + [DataRow("sin(30 + 15)", "sin((pi / 200) * (30 + 15))")] + [DataRow("sin(45) * cos(45) - tan(30)", "sin((pi / 200) * (45)) * cos((pi / 200) * (45)) - tan((pi / 200) * (30))")] + [DataRow("arcsin(arccos(0.5))", "(200 / pi) * (arcsin((200 / pi) * (arccos(0.5))))")] + [DataRow("sin(sin(sin(30)))", "sin((pi / 200) * (sin((pi / 200) * (sin((pi / 200) * (30))))))")] + [DataRow("log(10)", "log(10)")] + [DataRow("sin(30) + pi", "sin((pi / 200) * (30)) + pi")] + [DataRow("sin(-30)", "sin((pi / 200) * (-30))")] + [DataRow("sin((30))", "sin((pi / 200) * ((30)))")] + [DataRow("arcsin(1) * 2", "(200 / pi) * (arcsin(1)) * 2")] + [DataRow("cos(1/2)", "cos((pi / 200) * (1/2))")] + [DataRow("sin ( 90 )", "sin ((pi / 200) * ( 90 ))")] + [DataRow("cos(arcsin(sin(45)))", "cos((pi / 200) * ((200 / pi) * (arcsin(sin((pi / 200) * (45))))))")] + public void UpdateTrigFunctions_Gradians(string input, string expectedResult) + { + // Call UpdateTrigFunctions in gradians mode + string result = CalculateHelper.UpdateTrigFunctions(input, CalculateEngine.TrigMode.Gradians); + + // Assert + Assert.IsNotNull(result); + Assert.AreEqual(expectedResult, result); + } } } diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateEngine.cs b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateEngine.cs index 912b1dc1b19c..0f2dbe56c6ce 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateEngine.cs +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateEngine.cs @@ -23,6 +23,13 @@ public class CalculateEngine public const int RoundingDigits = 10; + public enum TrigMode + { + Radians, + Degrees, + Gradians, + } + /// /// Interpret /// @@ -52,6 +59,9 @@ public CalculateResult Interpret(string input, CultureInfo cultureInfo, out stri input = CalculateHelper.FixHumanMultiplicationExpressions(input); + // Modify trig functions depending on angle unit setting + input = CalculateHelper.UpdateTrigFunctions(input, Main.GetTrigMode()); + var result = _magesEngine.Interpret(input); // This could happen for some incorrect queries, like pi(2) diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateHelper.cs b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateHelper.cs index ea1862bbf0c3..73dd308549a8 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateHelper.cs +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/CalculateHelper.cs @@ -25,6 +25,11 @@ public static class CalculateHelper @")+$", RegexOptions.Compiled); + private const string DegToRad = "(pi / 180) * "; + private const string GradToRad = "(pi / 200) * "; + private const string RadToDeg = "(180 / pi) * "; + private const string RadToGrad = "(200 / pi) * "; + public static bool InputValid(string input) { if (string.IsNullOrWhiteSpace(input)) @@ -204,5 +209,86 @@ private static string CheckConstantThenConstant(string input) return output; } + + // Gets the index of the closing bracket of a function + private static int FindClosingBracketIndex(string input, int start) + { + int bracketCount = 0; // Set count to zero + for (int i = start; i < input.Length; i++) + { + if (input[i] == '(') + { + bracketCount++; + } + else if (input[i] == ')') + { + bracketCount--; + if (bracketCount == 0) + { + return i; + } + } + } + + return -1; // Unmatched brackets + } + + private static string ModifyTrigFunction(string input, string function, string modification) + { + // Get the RegEx pattern to match, depending on whether the function is inverse or normal + string pattern = function.StartsWith("arc", StringComparison.Ordinal) ? string.Empty : @"(? Resources.wox_plugin_calculator_plugin_name; @@ -67,6 +69,20 @@ public class Main : IPlugin, IPluginI18n, IDisposable, ISettingProvider DisplayDescription = Resources.wox_plugin_calculator_replace_input_description, Value = true, }, + new PluginAdditionalOption + { + Key = TrigMode, + DisplayLabel = Resources.wox_plugin_calculator_trig_unit_mode, + DisplayDescription = Resources.wox_plugin_calculator_trig_unit_mode_description, + PluginOptionType = PluginAdditionalOption.AdditionalOptionType.Combobox, + ComboBoxValue = (int)CalculateEngine.TrigMode.Radians, + ComboBoxItems = + [ + new KeyValuePair(Resources.wox_plugin_calculator_trig_unit_radians, "0"), + new KeyValuePair(Resources.wox_plugin_calculator_trig_unit_degrees, "1"), + new KeyValuePair(Resources.wox_plugin_calculator_trig_unit_gradians, "2"), + ], + }, }; public List Query(Query query) @@ -183,6 +199,7 @@ public void UpdateSettings(PowerLauncherPluginSettings settings) var inputUseEnglishFormat = false; var outputUseEnglishFormat = false; var replaceInput = true; + var trigMode = CalculateEngine.TrigMode.Radians; if (settings != null && settings.AdditionalOptions != null) { @@ -194,11 +211,20 @@ public void UpdateSettings(PowerLauncherPluginSettings settings) var optionReplaceInput = settings.AdditionalOptions.FirstOrDefault(x => x.Key == ReplaceInput); replaceInput = optionReplaceInput?.Value ?? replaceInput; + + var optionTrigMode = settings.AdditionalOptions.FirstOrDefault(x => x.Key == TrigMode); + trigMode = (CalculateEngine.TrigMode)int.Parse(optionTrigMode.ComboBoxValue.ToString(CultureInfo.InvariantCulture), CultureInfo.InvariantCulture); } _inputUseEnglishFormat = inputUseEnglishFormat; _outputUseEnglishFormat = outputUseEnglishFormat; _replaceInput = replaceInput; + _trigMode = trigMode; + } + + public static CalculateEngine.TrigMode GetTrigMode() + { + return _trigMode; } public void Dispose() diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.Designer.cs b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.Designer.cs index b48a3f417ec3..861993dbdd33 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.Designer.cs +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.Designer.cs @@ -203,5 +203,50 @@ public static string wox_plugin_calculator_replace_input_description { return ResourceManager.GetString("wox_plugin_calculator_replace_input_description", resourceCulture); } } + + /// + /// Looks up a localized string similar to Degrees. + /// + public static string wox_plugin_calculator_trig_unit_degrees { + get { + return ResourceManager.GetString("wox_plugin_calculator_trig_unit_degrees", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gradians. + /// + public static string wox_plugin_calculator_trig_unit_gradians { + get { + return ResourceManager.GetString("wox_plugin_calculator_trig_unit_gradians", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Trigonometry Unit. + /// + public static string wox_plugin_calculator_trig_unit_mode { + get { + return ResourceManager.GetString("wox_plugin_calculator_trig_unit_mode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Specifies the angle unit to use for trigonometry operations.. + /// + public static string wox_plugin_calculator_trig_unit_mode_description { + get { + return ResourceManager.GetString("wox_plugin_calculator_trig_unit_mode_description", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Radians. + /// + public static string wox_plugin_calculator_trig_unit_radians { + get { + return ResourceManager.GetString("wox_plugin_calculator_trig_unit_radians", resourceCulture); + } + } } } diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx index 727603ab04d6..6686bc896ea8 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx @@ -167,4 +167,24 @@ When using direct activation, appending '=' to the expression will replace the input with the calculated result (e.g. '=5*3-2=' will change the query to '=13'). + + Trigonometry Unit + Title text for trig unit mode. + + + Specifies the angle unit to use for trigonometry operations. + Description text for trig mode setting. + + + Radians + Text for angle unit. + + + Degrees + Text to use for angle unit. + + + Gradians + Text for angle unit. + \ No newline at end of file From 1b561387ea607d96830fc5e88a84a23fb6620487 Mon Sep 17 00:00:00 2001 From: Nathan Gill Date: Mon, 6 Jan 2025 14:50:15 +0000 Subject: [PATCH 2/3] Update Resources.resx Co-authored-by: Heiko <61519853+htcfreek@users.noreply.github.com> --- .../Properties/Resources.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx index 6686bc896ea8..3c56eedf4b5d 100644 --- a/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx +++ b/src/modules/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.Calculator/Properties/Resources.resx @@ -172,7 +172,7 @@ Title text for trig unit mode. - Specifies the angle unit to use for trigonometry operations. + Specifies the angle unit to use for trigonometry operations Description text for trig mode setting. From 8e4d3a0df42d21ed6e0338f5e8fb905d20f65cfd Mon Sep 17 00:00:00 2001 From: OldUser101 Date: Mon, 6 Jan 2025 17:52:24 +0000 Subject: [PATCH 3/3] Added GitHub SpellCheck rule for 'gradians'. --- .github/actions/spell-check/expect.txt | 118 +------------------------ 1 file changed, 1 insertion(+), 117 deletions(-) diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index 07d9ee9723d5..120683deaab0 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -4,12 +4,10 @@ abgr ABlocked ABOUTBOX Abug -accctrl Acceleratorkeys ACCEPTFILES ACCESSDENIED ACCESSTOKEN -aclapi AClient AColumn acrt @@ -50,12 +48,9 @@ APIENTRY APIIs Apm APPBARDATA -appdata APPEXECLINK -Appium APPLICATIONFRAMEHOST appmanifest -appmodel APPNAME appref appsettings @@ -78,11 +73,7 @@ ASSOCSTR ASYNCWINDOWPLACEMENT ASYNCWINDOWPOS atl -atlbase -atlcom atleast -atlfile -atlstr ATRIOX aumid Authenticode @@ -120,7 +111,6 @@ bmi bms BNumber BODGY -bootstrapper BOOTSTRAPPERINSTALLFOLDER bostrot BOTTOMALIGN @@ -147,7 +137,6 @@ CALG callbackptr calpwstr Cangjie -caniuse CANRENAME CAPTUREBLT CAPTURECHANGED @@ -162,11 +151,9 @@ CDeclaration CDEF CElems CENTERALIGN -ceq certlm certmgr cfp -cguid CHANGECBCHAIN changecursor CHILDACTIVATE @@ -190,41 +177,31 @@ CLSCTX Clusion cmder CMDNOTFOUNDMODULEINTERFACE -Cmds CMIC CMINVOKECOMMANDINFO CMINVOKECOMMANDINFOEX CMock CMONITORS cmph -cne CNF coclass codereview Codespaces -codicon COINIT colorconv colorformat colorhistory colorhistorylimit COLORKEY -comdef comdlg comexp cominterop -commandline -commctrl -commdlg compmgmt COMPOSITIONFULL -comutil CONFIGW CONFLICTINGMODIFIERKEY CONFLICTINGMODIFIERSHORTCUT CONOUT -consts -contentdialog contentfiles CONTEXTHELP CONTEXTMENUHANDLER @@ -237,7 +214,6 @@ COULDNOT countof cph CPower -cppwinrt createdump CREATESCHEDULEDTASK CREATESTRUCT @@ -246,8 +222,6 @@ CRECT CRH critsec Crossdevice -CRSEL -crx CSearch CSettings cso @@ -283,11 +257,8 @@ DBLEPSILON DCapture DCBA DCOM -dcommon -dcomp DComposition DCR -DCs ddd DDEIf DDevice @@ -320,7 +291,6 @@ DESELECTOTHERS DESKTOPABSOLUTEEDITING DESKTOPABSOLUTEPARSING desktopshorcutinstalled -desktopwindowxamlsource devblogs devdocs devenum @@ -328,7 +298,6 @@ devmgmt DEVMODE DEVMODEW DEVMON -devpkey DEVSOURCE DGR DIIRFLAG @@ -390,8 +359,6 @@ DWORDLONG dworigin dwrite dxgi -dxgidebug -dxgiformat easeofaccess ecount EData @@ -400,13 +367,10 @@ EDITKEYBOARD EDITSHORTCUTS EFile ekus -emmintrin -Emoji ENABLEDELAYEDEXPANSION ENABLEDPOPUP encodedlaunch encryptor -endpointvolume ENDSESSION ENSUREVISIBLE ENTERSIZEMOVE @@ -428,7 +392,6 @@ etw eurochange eventlog eventvwr -evntrace evt EWXFORCE EWXFORCEIFHUNG @@ -440,7 +403,6 @@ examplehandler examplepowertoy EXAND EXCLUDEFROMCAPTURE -exdisp executionpolicy exename EXITSIZEMOVE @@ -495,7 +457,6 @@ frm Froml FROMTOUCH fsmgmt -Functiondiscoverykeys FZE gacutil Gaeilge @@ -525,10 +486,10 @@ gpo GPOCA gpp gpu +gradians GSM gtm guiddata -guiddef GUITHREADINFO GValue gwl @@ -572,7 +533,6 @@ Hif HIMAGELIST himl hinst -hinstance HIWORD HKCC HKCR @@ -601,7 +561,6 @@ hrgn hsb HSCROLL hsi -hstring HTCLIENT hthumbnail HTOUCHINPUT @@ -671,14 +630,12 @@ installscopeperuser INSTALLSTARTMENUSHORTCUT INSTALLSTATE Inste -Intelli Interlop INTRESOURCE INVALIDARG invalidoperatioexception ipcmanager IPREVIEW -ipreviewhandlervisualssetfont irprops isbi ISearch @@ -703,7 +660,6 @@ jpe jpnime Jsons jsonval -junja jxr keybd KEYBDDATA @@ -721,7 +677,6 @@ keyvault KILLFOCUS killrunner kmph -Knownfolders KSPROPERTY Kybd lastcodeanalysissucceeded @@ -747,7 +702,6 @@ listview lld LLKH llkhf -lmcons LMEM LMENU lnks @@ -762,7 +716,6 @@ LOGFONTW logon LOGPIXELSX longdate -LONGLONG lowlevel LOWORD lparam @@ -786,7 +739,6 @@ lprc LPSAFEARRAY lpstr lpsz -lpt LPTHREAD LPTOP lptpm @@ -801,7 +753,6 @@ LSTATUS lstrcmp lstrcmpi lstrlen -LTRB LTRREADING luid LUMA @@ -838,18 +789,13 @@ MERGECOPY MERGEPAINT Metadatas metafile -mfapi mfc -mfidl -mfobjects mfplat -mftransform Mgmt mic midl mii mindaro -Minimatch Minimizable MINIMIZEBOX MINIMIZEEND @@ -863,10 +809,8 @@ mlcfg mmc mmcexe MMdd -mmdeviceapi mmi mmsys -mmsystem mockapi MODESPRUNED MONITORENUMPROC @@ -891,12 +835,10 @@ msc mscorlib msdata MSDL -msedge MSGFLT msiexec MSIFASTINSTALL MSIHANDLE -msiquery MSIRESTARTMANAGERCONTROL msixbundle MSIXCA @@ -943,7 +885,6 @@ netframework netsetup netsh newcolor -newdev NEWDIALOGSTYLE NEWFILE newitem @@ -967,7 +908,6 @@ NOCONFIRMMKDIR NOCOPYBITS NOCOPYSECURITYATTRIBS nodeca -nodoc NODRAWCAPTION NODRAWICON NOINHERITLAYOUT @@ -999,7 +939,6 @@ NOTIFICATIONSDLL NOTIFYICONDATA NOTIFYICONDATAW NOTIMPL -notlike NOTOPMOST NOTRACK NOTSRCCOPY @@ -1011,13 +950,10 @@ NResize nsunt NTAPI ntdll -ntfs NTSTATUS nullonfailure numberbox nwc -Objbase -objidl ocr Ocrsettings odbccp @@ -1046,7 +982,6 @@ osvi OUTOFCONTEXT outpin Outptr -outputtype outsettings OVERLAPPEDWINDOW overlaywindow @@ -1063,7 +998,6 @@ PARENTRELATIVEPARSING parray PARTIALCONFIRMATIONDIALOGTITLE PATCOPY -pathcch PATHMUSTEXIST PATINVERT PATPAINT @@ -1116,7 +1050,6 @@ plocm pluginsmodel PMSIHANDLE pnid -Pnp Popups POPUPWINDOW POSITIONITEM @@ -1143,7 +1076,6 @@ pptal ppv prc Prefixer -Preinstalled prependpath prevhost previewer @@ -1160,7 +1092,6 @@ prm proactively PROCESSENTRY PROCESSKEY -processthreadsapi PROCESSTRACE PRODEXT PRODUCTVERSION @@ -1169,9 +1100,7 @@ programdata projectname PROPBAG PROPERTYKEY -propkey PROPVARIANT -propvarutil prvpane psapi pscid @@ -1229,7 +1158,6 @@ rectp RECTSOURCE recyclebin Redist -redistributable reencode reencoded REFCLSID @@ -1258,10 +1186,8 @@ remoteip Removelnk renamable RENAMEONCOLLISION -Renamer reparented reparenting -reparse reportfileaccesses requery requerying @@ -1273,7 +1199,6 @@ RESIZETOFIT resmimetype RESOURCEID RESTORETOMAXIMIZED -restrictederrorinfo resultlist RETURNONLYFSDIRS RGBQUAD @@ -1288,7 +1213,6 @@ riid ringbuffer RKey RNumber -roadmap rop ROUNDSMALL rpcrt @@ -1301,14 +1225,12 @@ rstringalpha rstringdigit RTB RTLREADING -ruleset runas rundll rungameid RUNLEVEL runtimeclass runtimepack -runtimes ruuid rvm rwin @@ -1356,21 +1278,17 @@ SHCNE SHCNF SHCONTF Shcore -shellapi SHELLDETAILS SHELLDLL shellex SHELLEXECUTEINFO SHELLEXECUTEINFOW -shellscalingapi SHFILEINFO SHFILEOPSTRUCT SHGDN SHGDNF SHGFI shinfo -shldisp -shlobj shlwapi shmem SHNAMEMAPPING @@ -1468,7 +1386,6 @@ STGC STGM STGMEDIUM sticpl -stl storelogo streamjsonrpc STRINGIZE @@ -1476,15 +1393,12 @@ stringtable stringval Strm strret -strsafe -strutil sttngs Stubless STYLECHANGED STYLECHANGING subkeys sublang -subquery Superbar sut svchost @@ -1492,7 +1406,6 @@ SVGIn SVGIO svgz SVSI -SWC SWFO SWP SWRESTORE @@ -1515,8 +1428,6 @@ SYSLIB SYSMENU SYSTEMAPPS SYSTEMTIME -tailwindcss -tapp TApplication TApplied targ @@ -1547,7 +1458,6 @@ THH THICKFRAME THISCOMPONENT THotkey -thumbcache TILEDWINDOW TILLSON timedate @@ -1560,17 +1470,14 @@ tkconverters TLayout tlb tlbimp -tlhelp TMPVAR TNP Toolhelp toolkitconverters -Toolset toolwindow TOPDOWNDIB TOUCHEVENTF TOUCHINPUT -touchpad TRACEHANDLE tracelogging tracerpt @@ -1582,7 +1489,6 @@ triaging trl trx tsa -Tsd TServer TStr tweakme @@ -1608,15 +1514,11 @@ uncompilable UNCPRIORITY UNDNAME UNICODETEXT -uninstantiated -uniquifier Uniquifies unitconverter unittests -Unknwn UNLEN UNORM -unregistering unremapped unvirtualized unwide @@ -1626,18 +1528,15 @@ Updatelayout UPGRADINGPRODUCTCODE Uptool urld -urlmon Usb USEDEFAULT USEFILEATTRIBUTES -USERDATA USESHOWWINDOW USESTDHANDLES USRDLL UType uuidv uwp -Uxtheme vabdq validmodulename valuegenerator @@ -1657,7 +1556,6 @@ vdupq VERBSONLY VERBW VERIFYCONTEXT -verrsrc VERSIONINFO VERTSIZE VFT @@ -1703,7 +1601,6 @@ WANTPALM wbem WBounds Wca -wcautil WCE wcex WClass @@ -1724,10 +1621,7 @@ wifi wil winapi winappsdk -wincodec -Wincodecsdk wincolor -windef windir WINDOWCREATED WINDOWEDGE @@ -1735,18 +1629,12 @@ WINDOWNAME WINDOWPLACEMENT WINDOWPOSCHANGED WINDOWPOSCHANGING -windowsapp WINDOWSBUILDNUMBER windowssearch windowssettings WINDOWSTYLES WINDOWSTYLESICON -windowsx -winerror WINEVENT -winevt -winexe -winforms winget wingetcreate Winhook @@ -1757,9 +1645,7 @@ WINNT winres winrt winsdk -winsdkver winsta -winternl WINTHRESHOLD WINVER winxamlmanager @@ -1805,14 +1691,12 @@ wrl wscui wsf wsh -wsl wstr wsz WTA WTNCA wtoi WTS -wtsapi WTSAT Wubi WVC