Try a keyboard running QMK firmware. You can map a single key to multiple codes depending on the length of the key press. I use caps lock as escape if released immediately, and control if held down. Putting the modifiers in the bottom corner of the keyboard was a sadistic design choice.