I use caps2esc [1] in Linux to remap capslock to ctrl on hold and esc on tap. It's such a simple yet insanely useful remapping! It really shines in modal editing (e.g. vim). I assume it's possible to use the underlying interception tools [2] to do that for any key without needing a particular programmable keyboard.