Personally, I liked the component-based interaction system.
It has separate components for “pressing”, “grabbing”, “rotating”, etc.
You simply add a component to an actor, and you can add logic to the component’s delegates that will be triggered when you respectively click, pickup, or rotate the actor (or parts of it, depending on the settings).
You need to create a common interface for the components, which will be called from the character when the screen is pressed. Next comes the “interception of control” of the components depending on its type.