G92 X0 Y0 Z0 only sets the soft zero, machine coords stay the same.
Anyway, I think I have this figured out now:
I have my X,Y limit switches at -X,-Y position (“lower” “left” corner). Z limit switch is in +Z position. These are accordingly configured using $23:
$23 = 3 (Homing direction invert mask)
(See “Axis config table”: https://www.diymachining.com/downloads/GRBL_Settings_Pocket_Guide_Rev_B.pdf)
Now $130, $131 and $132 are X,Y,Z max travel, respectively. These are the values used for soft limits if enabled. In my case I had:
$130 = 200
$131 = 200
$132 = 200
In the case of my inverted homing directions, grbl is using $130 and $131 to calculate the machine position, ie:
machineX = 0 - $130 = -200(mm)
machineY = 0 - $131 = -200(mm)
This is the point where the limit switches close. After pull-off, which is 1mm,
machineX = -200mm + 1mm = -199mm
machineY = -200mm + 1mm = -199mm
as the spindle has traveled 1mm each in the positive direction.
So, I am able to accomplish what I want for X,Y using:
$130=1
$131=1
Of course this will only work if I don’t use soft limits (which I am not.)
The resulting Z will still always be -1mm (0 - 1mm travel after pull-off), as Z homing is not inverted. (As Z homing is not inverted, $132 has no bearing.) I apparently have no control over this* This is not a big deal to me; I can just remember to add 1 to the Z value when I resume my zero after a power outage (see 2 posts above.)
So now my settings are:
$20=0 (Soft limits disabled)
$130=1 (X - Max Travel)
$130=1 (Y - Max Travel)
$132=30 (Z - Max Travel) (inconsequential here actually)
The resulting machine position after homing is now 0,0,-1
Yay!
*Actually, I came across something which talked about telling the firmware to use the after pull-off position rather than the limit switch break position to set machine zero. However, 1) I have not been able to find it again
, 2) It may have been for some firmware other than grbl, because I see nothing in $$ which would indicate a setting for that.