But a more serious answer: making functions for negative bools are usually useless and messy. For example if I make is_up() which is the same as !is_down(), then why not making is_invisible() (!is_visible()), is_dynamic() (!is_static()), and basically alias for every negative function that return a bool? This will very quickly pollute the apis and make it harder to find the functions you need.getters should not be redundant.
I think i was tired yesterday and i didn't make the good question so i will explain better the problem :
In key control management there functions for the gesture we could to with a key. Is pressed wich trigger when a key is hit. Key_down wich trigger when a key id pressed, and key_up which one trigger when a key is released. The gesture of realeasing the key is ofently called key_up. So when a asked for a is_up i confused myself and i asked for a negative of down state whicj i agree is a stupid question :-)
This is not an impossible probleme to resolve but i was during ly developpement with the probleme of a mouse down action that trigger 2 action :
Imagine an interruptor who can light on and light off. if light is on light off and if the light is off it make it on.
If i use the gesture of mouse_down as trigger : the light will blink because it will trigger permantly.
That why a asked id there implemented a trigger for releasing button. That make our clic action could only be triggred one with a gesture.
This problem can be resolved by many ways, but just want to know if the engine have a native way to hold it
its a good feature request. I will think of a way to solve this nicely and add this to next version. perhaps a set of was_pressed(), was_released() or was_clicked() that means in the current frame or something like that. (I want to keep the mouse and keyboard handlers without events, to keep their API simple and easy to use out of the main loop).
meanwhile your patch seems to be suitable, in next version you will get a proper solution. thanks!