This works better on pointerlock: https://experiments.turbowarp.org/pointerlock/529695225
I made this ages ago (hence the low project ID) but didn't share it for some reason.