The problem is that the computer works differently when homing or limiting.
When homing, it hits the switch, then backs off until contact is broken again (so the switch is not now live). When limiting, the machine hits the switch, stop - so the switch is still live. I do not understand what you mean when you say a proxy.
It seems to me that you are trying to do something that the software is not designed to do. It works ok for one axis, but the sequence of events and the different possibilities with two axis are quite complcated.
As I remember it, you have the A axis slaved to the z axis, presumably driving opposite sides of the gantry. All you want to do is have both sides home together, so that they are square. You do not say how much out of square this gantry could be, I assume not a lot, and the problem is also, I assume, that even with one side of the gantry powered, the other side will move in sympathy anyway.
In such a position, I would set to and write a macro for what you want. You can do all the functions in Visual Basic, and just replace the Vis basic on the Set Home button.
The sequence would have to be something like this:-
1. Turn off the limit switches.
2. Start moving gantry towards switches
3. Monitor the limit switches.
4. When one is pressed, stop that side of the gantry and wait until the other hits it's switch.
5. Reverse out, monitor both switches.
5. When one opens, stop and wait for the other
6. Set DRO to zero.
7. Rest limit switches.
The problem is that there are so many combinations of switch settings while all this is taking place, that unles you write what you want, I do not think you will find that the Mach3 software will do it, without the odd hiccup now and again.
Jim