How to make rigidbody not push by default, only on keydown

I have a rigidbody controller, and I don’t want to be able to adversely affect the environment by default. That is, a little like real life, where if we walk into a table, chair, or sofa, we bump into it and we stop. We don’t actually want to move the sofa unless we intentionally move the sofa, and so I’d like to make it so that by default we would stop, but if the user pressed down a key while moving, then that means it’s okay to move/push whatever you come into contact with. That way I can run around and stop whenever I hit a chair, but if I hold down a key and hit a chair only then will the chair move, because it was intentional. However, some things such as a ball might make sense to move on hit by default.

Any ideas on how best to implement this?

Many thanks in advance!

Anthony