Following some ideas about GB3 events system, how I've tried to solve some issues and the inner complexity.
As many programs GB3 waits about user commands. And most of paint commands are given by devices like keyboard, mouse and tools on tablets. These devices reports to the system various physical states (positions, pressure, angles, pressed, released, …). Most of the time the program doesn't ask these states, but waits that the system reports theirs changes.
We call that Events.
Now the complexity comes from following points:
GB3 can't let user to specify a binding between device event and an internal command if the event is not supported by the system. Using my previous CTRL key example, GB3 should not propose a “left CTRL” and a “right CTRL” bindings on a system that doesn't make the difference between left and right CTRL keys.
⇒ So the first thing we see is the binding is system dependant.