between StyleI.player and MenuI.player is that StyleI is set even
if there's no attached MenuButton, and MenuI.player is set even
if there's no attached column. That's an odd distinction, anyway.
Move input.MenuI.player to input.pn. This also puts it in the
same place as input.mp.
This only deals with buttons being held, so won't cause
performance issues.
This deals with a general problem of the input layer:
you can query the current state of the inputs, but inputs
are received in a queue, causing inconsistencies.
This is why pressing enter during a load, then holding Alt
after pressing it, causes the game to switch fullscreen
after the load finishes; checking for "alt-enter" should
be checking if Alt was pressed when Enter was pressed,
not whether it's pressed right now.
Similarly, CodeDetector has difficulty handling a "Right-Left"
and a "Left-Right" code simultaneously. If both buttons
are pressed quickly, it needs to check whether Right was
pressed at the time Left was reported, not at the time
EnteredCode was called.