I haven't done this because I'm trying to stop chording: pressing two keys simultaneously with the same hand. I'm pretty sure it causes RSI (try Googling chording and RSI).
When I have to type all caps, I find myself chording a lot. The alternative is to always use the right shift for capital letters on the left and vice versa, but that doesn't work well for all caps words. Therefore I'm trying to learn to actually use caps lock.
Vim solution: type in all lower case, then select what you just typed and press ~.
Admittedly it doesn't help for non-Vim applications, but I don't find myself typing all caps outside Vim very often. It's usually to type something like FOO_BAR, but then you can just type FO<Ctrl-N> and that usually works.
How often do you type in all caps and why can't you bind another key or key combo to caps? Regarding chording I use the following strategy.
I use i3wm which lets you define your own modes and bind arbitrary keys to commands. Effecting a mode is a set of effective bindings wherein one binding in one mode can make a different mode active letting you define vim like sequences of keys to accomplish a goal.
I use xcape which lets you have a key produce a different key when pressed vs used as a modifier. I use the key produced by tapping right shift to start operations with my window manager. Eg vot opens appkey t in this case terminal in a vertical split. In Emacs I use the key produced by tapping left shift to start operations as a leader key eg to correct mispellings I use left shift c w.
I remap caps to escape. I would also just map escape to caps but some games seem to ignore what you have mapped and require you to press the real escape key to get out of a menu. So lacking an optimal key I just map right shift -> c to caps.
When I have to type all caps, I find myself chording a lot. The alternative is to always use the right shift for capital letters on the left and vice versa, but that doesn't work well for all caps words. Therefore I'm trying to learn to actually use caps lock.
Admittedly it's not going very well