D.B.
Your husband said no to the keys, and you have to as well. Maybe she thinks she can influence you or manipulate you more. I agree to put this back on your husband, but not in a way that makes you look weak or likely to waver if she keeps the pressure up. Tell her you and your husband are a team, and that MIL is not going to get anywhere trying to go around your husband to work you over.
Your FIL gave your money to help with the house – and that means she did too. If you have not expressed your gratitude to them sufficiently, do so. But that doesn’t give either of them a right to the keys.
Your MIL is verbally and emotionally abusive. She trashes your parents to you, insults their appearance, and lets you know that she’s watching your weight? I’d walk out and tell her, “I will not stand by while you criticize the people who raised me. They deserve your respect, not your ridicule.”
She’s also physically abusive, hitting your toddler across the mouth for doing what toddlers do. I commend you for grabbing her arm, and I hope you were stronger in your reply than just “asking her not to do it anymore.” But something else troubles me. You say, “Last time when she did this…” – do you mean she has done it more than once? If so, I would absolutely tell her she is not allowed near either child without you or your husband right there, and not within 5 feet under any circumstances, and I would tell her why: “I am going to keep my child safe from someone who hits babies.” If you have a plan for her to watch your older child when you have the baby, you probably can’t say this, I realize. But if she’s done it more than once, I assume you will have your parents or some friends take care of your son. Do have at least 2 people lined up to handle this.
You’re right: if you give her a key, she will let herself in at any time, uninvited or not. And she may even let herself in when you are not there. She’s in your business too much now, so I wouldn’t give her any more opportunities.
If you really think you can give her chores to do (as someone suggested below) without her thinking she’s more entitled than she already does, go ahead. But I think that’s a slippery slope. I think she’s all into control and not into helping you at all. I wouldn’t invite her in any old time she shows up, and I wouldn’t answer the door if it’s not convenient. If she’s in and overstaying her welcome, it’s okay to say, “I’m sorry, you have to go now. I am putting Billy down for a nap and going to bed myself. We have a schedule to stick to. Bye bye.”
And if she’s talking trash in front of your child, you have to put a stop to that too. Get up and take the child to another room, or put her in the stroller, or (if at MIL’s house), get up and leave. Tell MIL you aren’t exposing Billy to talk like that, teaching her language like that, letting her think it’s okay to treat others like that, or letting her take in criticism of her other grandparents, or whatever it is. Sounds like your husband will back you up on this.
I wouldn’t worry so much about your FIL. I think he probably knows what she’s like. And you and your husband can certainly present a united front and agree that you will not allow your children or each other to be spoken to in an insulting or abusive way. One reason she’s like this is that everyone is allowing it. So figure out what she values – holidays, birthdays, getting to do things with the grandchildren…. – and have your husband let her know that it’s not happening if she keeps this up.
This is your house. She’s not going to be there more than you would like, unless your husband won’t back you up and straighten her out.