I think we can pretty easy approach a best case here. I suspect the menu entries that signal that the player doesn’t want to interact with the menu anymore and the entries that don’t are fairly distinct.
For example toggling headlights, interacting with guns, and turning appliances on and off are pretty likely to be followed up by similar commands, but “start driving”, “stop driving” and “release the wheel” are pretty strong indications that the player is done with the menu.
I think theres a fairly simple solution to both problems you outline @mlangsdorf, the gun aiming menu already does something like what you outline, but it pushes an action to return to the menu onto the action stack instead of synthesizing a keypress.
If you wrap the invocation of the menu in a loop that checks for the player running out of moves, you can repeatedly call the whole thing and take action on selections until the player exits. If they run out of moves with selections pending, you push the “enter the driving menu” onto the stack and exit from the function, then the next turn the action fires and sends you back to the menu.