Assuming Widget extends GameObject, then it already has an Event Emitter built into it. Which means it can already emit any custom event you need. What you have bound as a listener is up to you, though. If you make it interactive, then there is nothing stopping you binding the input events to methods on the Widget. The Widget will emit pointerdown etc, on itself, so you could listen for those and handle them without it ever touching the Scene.
The Game Object itself will emit some input events. Where you bind the listeners for those is up to you, but the events never touch the Scene. In fact, thinking about it, there isn’t a single Input event from anywhere that goes to the Scene!