Hi and thanks for your question. Would it be okay if the control that sends the program changes is a knob instead of a button?
If that's okay, you have this setup:
Knob: it's a program change knob that has a min and max set to the two programs that you're interested in going to and from, respectively.
Button: it's a momentary button, supercontrol of the knob. It is set to "force not stepper." Otherwise it would step through the values of the knob on each press.
That's it. While the button is pressed, we're in program 2 (the max of the knob). Otherwise we're in program 1.
Note: For anything more complicated, the knob would need to be a supercontrol of buttons (which would become a button group).
Please let me know if this answers your question or if I've missed the point. Thanks!