I know why. It will offend a lot of people here, but... for the love of god, when your hardware gets better, STOP writing your own software and out source it. PLEASE. You simply do not know what you are doing give it to someone that does.
But they did. That's exactly what happened. They hired a team of PC operators in India that slapped a few preexisting pieces of crap written in NodeJS together, and there you go, your shiny new monitor firmware is ready.
Wait. No. Wrong type of OSD. NodeJS is android smart TV territory.
I'm talking about non-smart, basic monitors with the buttons hidden down the side (or bottom, or some awkward to get to place).
The ones you feel for the 2 or 3 buttons (the fancy monitor has a joystick! ... and 3 other buttons which all do random things.) Press one of them, get the wrong menu, press the other one, but realise the previous menu is active and now you are in a sub menu.
Then you press buttons randomly hoping to find out which one is "BACK" or "HOME"
You give up after changing the brightness or contrast accidentally, or switching it into gaming mode of some crap. You wait for it to time out.
You try another button hoping it's the menu and luckily it is. So you press up... nope... down to the "Source>>" text line and press the button.... NOPE. That IS the back button we were looking for earlier. Repeat.
Now it gives you menu like:
< DP0 >
If you press "Right" it will cycle to the next source. If there is a signal there, regardless of whether this is the signal you wanted or not, it will lock onto it and close the menu.
If it WAS the source you wanted and it doesn't (yet) have a signal it will advance to the next signal after 3 seconds and stop on teh first one it finds a signal on.
Each interaction with that button takes a second or two to have an effect. Multiple button presses when one was required are sometimes ignored and sometimes buffered.
It's exactly like programming a 1980s radio alarm clock.
By in by, I have done the task for writing such an interface. Well, a 2 button clock/alarm setting interface. It's a pain stakingly tedious and bug harbouring state machine task full of corner cases to address everywhere. "Hold for fast?" or "Hold to exit setup?"
Communicating the function of the buttons leaves a lot to be desired, firstly in terms of "affordability".
In my view, the menu I have could be simplified to a single joystick. The menus "journeys" by use case drawn out and studied, then rearranged into the most practical, intuitive form. The more common the task, the more obvious and intuitive. Leave the complex parts for being buried in sub menu hell. Consistent navigation. Fast reponse. Either buffer (ideal) or ignore, don't mix. etc. etc. etc. You know HCI and UX.