[FR] Axis scaling at Runtime (Shrinkage factors)

Greetings,

I am completely new to Klipper and loving the granular control of my macros and G commands.

I would like to code a simple scale factor into the move commands that will reference a settable variable. This is similar to the M579 command in RepRap controllers. I use M579 to deal with X/Y and Z shrinkage on prints with a delta printer, but I imagine it would be useful for all printers. If i need to adjust shrinkage it is a simple 1 line change in the file to reprint. (I have had shrinkage vary based on day…)

I would imagine this scale factor should modify the commanded motions prior to the implementation of the kinematics model similar to GCODE_OFFSET.
Is this something that is already coded? I did not see anything in gcode_move.py, really its a M221 for your axis steppers. ^^

I will just hack this into the for loop in G1 with no checks for machine limits etc since the value is usually low, (97% to 103%) but curious if its something others would use such that like GCODE_OFFSET it makes sure the base and homing properties are updated and can be config saved.

I have zero python experience (old Java person) and don’t know if I could quickly make a pull request if someone else wants to pick up this torch I will be supportive. ^^

Outline:
1.) Scale axis similar to cmd_M221
2.) Scale machine bounds by similar factor and save.
3.) (Maybe) Add new machine variables that are stored in config file.