I resolved this pain by making the Caps Lock key work as it should: tap for “Esc” and hold for “Control”. Then I took the Escape key and made it Caps Lock—it’s occasionally useful, but not nearly enough to warrant a home row position.

You can do this with Karaniner Elements on macOS. There’s a way to do it on Windows too, but how escapes me at the moment.

I think AutoHotkey would be the program to use on Windows?

For a simpler solution I can recommend https://github.com/randyrants/sharpkeys. Of course AHK is great tool for all kinds of more advanced customizations.