Frankly, the only thing you can do is the sort of thing that, as parents, we teach our children to do when someone does something that they don’t like. Be loud, clear, and firm. “NO, I don’t want to have sex with you! Stop touching me! If you don’t stop, then it will be RAPE, and you will be RAPING me.”
I may have missed something, and if so this doesn’t apply, but it doesn’t seem like he’d hold you down if you actually fought him? He’s trying to use more coercive methods.
I think you need to name the behaviour in order to shame him into stopping. I’m not victim blaming, having been in a similar situation, but it seems like he might stop in the moment if you held a strong boundary instead of submitting – that’s not your fault, as he’s trained you into it, but you need to learn to overcome it. To find your voice, and be firm and strong.
Practice it in the mirror – finding your anger, and saying NO. I don’t WANT to. Get OFF me.
And personally, if he doesn’t stop, I’d fight him. Push him off, bite him, struggle. The worst thing that happens if you fight him and he does it anyway, is that he’ll rape you (which he’s already doing) but then it might give you another point of clarity – you’ll know then that he is literally just a rapist, not a ‘sex pest’, and not someone who ‘thinks you like it’.
That’s what made me realise with my boyfriend, when I was young. I fought him for the first time and he hit me, put his hand around my throat, and held me down and did it anyway – and I knew then in my bones that it was over. I couldn’t pretend anymore.