I’ve implemented the above idea now: https://github.com/lydell/Model01-Firmware/commit/5d9632022889eb54d62db3925f49b139b2becd33
Seems to be working great so far. Just remember that if you need to hold down shift for real, you need to hold down fn+shift.