mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-23 15:09:41 +01:00
Introduce a new `MccsCapabilitiesParser` to replace the regex-based `VcpCapabilitiesParser` for parsing MCCS capabilities strings. The new parser uses a grammar-based recursive descent approach, improving performance, extensibility, and error handling. Key changes: - Implement `MccsCapabilitiesParser` with `ref struct` for zero heap allocation and efficient parsing using `ReadOnlySpan<char>`. - Add sub-parsers for `vcp()` and `vcpname()` segments. - Accumulate errors in `ParseError` list and return partial results. - Replace all references to `VcpCapabilitiesParser` with the new parser in `DdcCiNative.cs` and `MonitorManager.cs`. - Enhance `VcpCapabilities` model with `MccsVersion` property. - Add comprehensive unit tests in `MccsCapabilitiesParserTests.cs` to validate real-world examples and edge cases. - Remove legacy `VcpCapabilitiesParser` and associated code. Additional improvements: - Optimize parsing for both space-separated and concatenated hex formats. - Improve logging for parsing progress and error diagnostics. - Adjust application initialization to prevent race conditions.
PowerToys Modules
This section contains documentation for individual PowerToys modules, including their architecture, implementation details, and debugging tools.
Available Modules
| Module | Description |
|---|---|
| Advanced Paste | Tool for enhanced clipboard pasting with formatting options |
| Always on Top | Tool for pinning windows to stay on top of other windows |
| Awake | Tool to keep your computer awake without modifying power settings |
| Color Picker | Tool for selecting and managing colors from the screen |
| Command Not Found | Tool suggesting package installations for missing commands |
| Crop and Lock | Tool for cropping application windows into smaller windows or thumbnails |
| Environment Variables | Tool for managing user and system environment variables |
| FancyZones (debugging tools) | Window manager utility for custom window layouts |
| File Explorer add-ons | Extensions for enhancing Windows File Explorer functionality |
| File Locksmith | Tool for finding processes that lock files |
| Hosts File Editor | Tool for managing the system hosts file |
| Image Resizer | Tool for quickly resizing images within File Explorer |
| Keyboard Manager | Tool for remapping keys and keyboard shortcuts |
| Mouse Utilities | Collection of tools to enhance mouse and cursor functionality |
| Mouse Without Borders | Tool for controlling multiple computers with a single mouse and keyboard |
| NewPlus | Context menu extension for creating new files in File Explorer |
| Peek | File preview utility for quick file content viewing |
| Power Rename | Bulk file renaming tool with search and replace functionality |
| PowerToys Run (deprecation soon) | Quick application launcher and search utility |
| Quick Accent | Tool for quickly inserting accented characters and special symbols |
| Registry Preview | Tool for visualizing and editing Registry files |
| Screen Ruler | Tool for measuring pixel distances and color boundaries on screen |
| Shortcut Guide | Tool for displaying Windows keyboard shortcuts when holding the Windows key |
| Text Extractor | Tool for extracting text from images and screenshots |
| Workspaces | Tool for saving and restoring window layouts for different projects |
| ZoomIt | Screen zoom and annotation tool |
Adding New Module Documentation
When adding documentation for a new module:
- Create a dedicated markdown file for the module (e.g.,
modulename.md) - If the module has specialized debugging tools, consider creating a separate tools document (e.g.,
modulename-tools.md) - Update this index with links to the new documentation
- Follow the existing documentation structure for consistency