One way to allow the user to add GUI interactivity (in addition to the keyboard interactivity) would be to create predefined classes, that know how to render (e.g. a slider, a dropdown, and an input).
Then, the user can use these classes in his Automaton, and all he has to do is 'register' them so that they can be rendered.
The user can then attach to the events of the classes (I still have to see how to do that, but should be doable) and can access their current value.