diff --git a/Marlin/src/core/enum.h b/Marlin/src/core/enum.h
index 4f5d53fb190c0bb8a36aebc0592bd0ba6dfb1439..e07c79f31083a3defd34f27a38fab11e71393845 100644
--- a/Marlin/src/core/enum.h
+++ b/Marlin/src/core/enum.h
@@ -55,6 +55,9 @@ enum AxisEnum {
 #define LOOP_XYZ(VAR) LOOP_S_LE_N(VAR, X_AXIS, Z_AXIS)
 #define LOOP_XYZE(VAR) LOOP_S_LE_N(VAR, X_AXIS, E_AXIS)
 #define LOOP_XYZE_N(VAR) LOOP_S_L_N(VAR, X_AXIS, XYZE_N)
+#define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS)
+#define LOOP_ABCE(VAR) LOOP_S_LE_N(VAR, A_AXIS, E_AXIS)
+#define LOOP_ABCE_N(VAR) LOOP_S_L_N(VAR, A_AXIS, XYZE_N)
 
 typedef enum {
   LINEARUNIT_MM,
diff --git a/Marlin/src/core/language.h b/Marlin/src/core/language.h
index 278e5bc81cd8ed594b42107336e9fc94dd58e169..31bc7eb8d025f93efecd7efb2e757974db6708de 100644
--- a/Marlin/src/core/language.h
+++ b/Marlin/src/core/language.h
@@ -208,10 +208,10 @@
 #define MSG_HOTEND_TOO_COLD                 "Hotend too cold"
 
 #define MSG_FILAMENT_CHANGE_HEAT            "Press button (or M108) to heat nozzle"
-#define MSG_FILAMENT_CHANGE_HEAT_LCD        "Press button to heat nozzle"
-#define MSG_FILAMENT_CHANGE_HEAT_M108       "Send M108 to heat nozzle"
 #define MSG_FILAMENT_CHANGE_INSERT          "Insert filament and press button (or M108)"
+#define MSG_FILAMENT_CHANGE_HEAT_LCD        "Press button to heat nozzle"
 #define MSG_FILAMENT_CHANGE_INSERT_LCD      "Insert filament and press button"
+#define MSG_FILAMENT_CHANGE_HEAT_M108       "Send M108 to heat nozzle"
 #define MSG_FILAMENT_CHANGE_INSERT_M108     "Insert filament and send M108"
 
 #define MSG_ERR_EEPROM_WRITE                "Error writing to EEPROM!"
@@ -238,8 +238,6 @@
 #define MSG_KP                              " Kp: "
 #define MSG_KI                              " Ki: "
 #define MSG_KD                              " Kd: "
-#define MSG_B                               "B:"
-#define MSG_T                               "T:"
 #define MSG_AT                              " @:"
 #define MSG_PID_AUTOTUNE_FINISHED           MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h"
 #define MSG_PID_DEBUG                       " PID_DEBUG "
@@ -280,6 +278,15 @@
 #define MSG_Y "Y"
 #define MSG_Z "Z"
 #define MSG_E "E"
+#if IS_KINEMATIC
+  #define MSG_A "A"
+  #define MSG_B "B"
+  #define MSG_C "C"
+#else
+  #define MSG_A "X"
+  #define MSG_B "Y"
+  #define MSG_C "Z"
+#endif
 #define MSG_H1 "1"
 #define MSG_H2 "2"
 #define MSG_H3 "3"
diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h
index 8f20ced284c6b821b809eb443dec258048b3dcd2..b9c0e2a5ffad0b02cfe2578c3be1e8acbb3f9918 100644
--- a/Marlin/src/core/macros.h
+++ b/Marlin/src/core/macros.h
@@ -24,6 +24,7 @@
 #define MACROS_H
 
 #define NUM_AXIS 4
+#define ABCE 4
 #define XYZE 4
 #define ABC  3
 #define XYZ  3
diff --git a/Marlin/src/lcd/language/language_an.h b/Marlin/src/lcd/language/language_an.h
index f5245d314c46075b77bc5ecebc14be099cfd191f..121efdfc491600c950ea5125fe5caa7d35e70f84 100644
--- a/Marlin/src/lcd/language/language_an.h
+++ b/Marlin/src/lcd/language/language_an.h
@@ -96,9 +96,15 @@
 #define MSG_SELECT                          _UxGT("Trigar")
 #define MSG_ACC                             _UxGT("Aceleracion")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -108,9 +114,15 @@
 #define MSG_A_RETRACT                       _UxGT("Acel. retrac.")
 #define MSG_A_TRAVEL                        _UxGT("Acel. Viaje")
 #define MSG_STEPS_PER_MM                    _UxGT("Trangos/mm")
-#define MSG_XSTEPS                          _UxGT("X trangos/mm")
-#define MSG_YSTEPS                          _UxGT("Y trangos/mm")
-#define MSG_ZSTEPS                          _UxGT("Z trangos/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A trangos/mm")
+  #define MSG_BSTEPS                        _UxGT("B trangos/mm")
+  #define MSG_CSTEPS                        _UxGT("C trangos/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X trangos/mm")
+  #define MSG_BSTEPS                        _UxGT("Y trangos/mm")
+  #define MSG_CSTEPS                        _UxGT("Z trangos/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E trangos/mm")
 #define MSG_E1STEPS                         _UxGT("E1 trangos/mm")
 #define MSG_E2STEPS                         _UxGT("E2 trangos/mm")
diff --git a/Marlin/src/lcd/language/language_bg.h b/Marlin/src/lcd/language/language_bg.h
index d256af8f482506a400ba744595d93bef2b852539..bf80f49ef8c08cabb94163f82998c7164fd0969a 100644
--- a/Marlin/src/lcd/language/language_bg.h
+++ b/Marlin/src/lcd/language/language_bg.h
@@ -83,9 +83,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-откат")
 #define MSG_A_TRAVEL                        _UxGT("A-travel")
 #define MSG_STEPS_PER_MM                    _UxGT("Стъпки/mm")
-#define MSG_XSTEPS                          _UxGT("X стъпки/mm")
-#define MSG_YSTEPS                          _UxGT("Y стъпки/mm")
-#define MSG_ZSTEPS                          _UxGT("Z стъпки/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Aстъпки/mm")
+  #define MSG_BSTEPS                        _UxGT("Bстъпки/mm")
+  #define MSG_CSTEPS                        _UxGT("Cстъпки/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xстъпки/mm")
+  #define MSG_BSTEPS                        _UxGT("Yстъпки/mm")
+  #define MSG_CSTEPS                        _UxGT("Zстъпки/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E стъпки/mm")
 #define MSG_E1STEPS                         _UxGT("E1 стъпки/mm")
 #define MSG_E2STEPS                         _UxGT("E2 стъпки/mm")
diff --git a/Marlin/src/lcd/language/language_ca.h b/Marlin/src/lcd/language/language_ca.h
index 9af28baf2a8671f5b9d2d18fdf568a66888c09c0..3103b7cd3a71e8dd4859790f0342b6bbeb969c6c 100644
--- a/Marlin/src/lcd/language/language_ca.h
+++ b/Marlin/src/lcd/language/language_ca.h
@@ -100,9 +100,15 @@
 #define MSG_SELECT                          _UxGT("Select")
 #define MSG_ACC                             _UxGT("Accel")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -111,9 +117,15 @@
 #define MSG_A_RETRACT                       _UxGT("Accel. retracc")
 #define MSG_A_TRAVEL                        _UxGT("Accel. Viatge")
 #define MSG_STEPS_PER_MM                    _UxGT("Passos/mm")
-#define MSG_XSTEPS                          _UxGT("Xpassos/mm")
-#define MSG_YSTEPS                          _UxGT("Ypassos/mm")
-#define MSG_ZSTEPS                          _UxGT("Zpassos/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Apassos/mm")
+  #define MSG_BSTEPS                        _UxGT("Bpassos/mm")
+  #define MSG_CSTEPS                        _UxGT("Cpassos/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xpassos/mm")
+  #define MSG_BSTEPS                        _UxGT("Ypassos/mm")
+  #define MSG_CSTEPS                        _UxGT("Zpassos/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Epassos/mm")
 #define MSG_E1STEPS                         _UxGT("E1passos/mm")
 #define MSG_E2STEPS                         _UxGT("E2passos/mm")
diff --git a/Marlin/src/lcd/language/language_cn.h b/Marlin/src/lcd/language/language_cn.h
index f6230a01397ab4311a0a74ea5bc0e6b28fa59d97..584dcc4d04b9e2a97be7bfbb368b38de7b357715 100644
--- a/Marlin/src/lcd/language/language_cn.h
+++ b/Marlin/src/lcd/language/language_cn.h
@@ -88,9 +88,15 @@
 #define MSG_PID_C                           "PID-C"
 #define MSG_ACC                             "Accel"
 #define MSG_JERK                            "Jerk"
-#define MSG_VX_JERK                         "Vx-jerk"
-#define MSG_VY_JERK                         "Vy-jerk"
-#define MSG_VZ_JERK                         "Vz-jerk"
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       "Va-jerk"
+  #define MSG_VB_JERK                       "Vb-jerk"
+  #define MSG_VC_JERK                       "Vc-jerk"
+#else
+  #define MSG_VA_JERK                       "Vx-jerk"
+  #define MSG_VB_JERK                       "Vy-jerk"
+  #define MSG_VC_JERK                       "Vz-jerk"
+#endif
 #define MSG_VE_JERK                         "Ve-jerk"
 #define MSG_VMAX                            "Vmax "
 #define MSG_VMIN                            "Vmin"
@@ -99,9 +105,6 @@
 #define MSG_A_RETRACT                       "A-retract"
 #define MSG_A_TRAVEL                        "A-travel"
 #define MSG_STEPS_PER_MM                    "Steps/mm"
-#define MSG_XSTEPS                          "Xsteps/mm"
-#define MSG_YSTEPS                          "Ysteps/mm"
-#define MSG_ZSTEPS                          "Zsteps/mm"
 #define MSG_ESTEPS                          "Esteps/mm"
 #define MSG_E1STEPS                         "E1steps/mm"
 #define MSG_E2STEPS                         "E2steps/mm"
diff --git a/Marlin/src/lcd/language/language_cz.h b/Marlin/src/lcd/language/language_cz.h
index 034cd7858378ba3b95c6bfaa02c1b51154c0ba7f..1e11af711c383c4ef0dff664b1073287f3c02ba0 100644
--- a/Marlin/src/lcd/language/language_cz.h
+++ b/Marlin/src/lcd/language/language_cz.h
@@ -196,9 +196,15 @@
 #define MSG_SELECT                          _UxGT("Vybrat")
 #define MSG_ACC                             _UxGT("Zrychl")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VELOCITY                        _UxGT("Rychlost")
 #define MSG_VMAX                            _UxGT("Vmax ")
@@ -209,9 +215,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retrakt")
 #define MSG_A_TRAVEL                        _UxGT("A-prejezd")
 #define MSG_STEPS_PER_MM                    _UxGT("Kroku/mm")
-#define MSG_XSTEPS                          _UxGT("Xkroku/mm")
-#define MSG_YSTEPS                          _UxGT("Ykroku/mm")
-#define MSG_ZSTEPS                          _UxGT("Zkroku/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Akroku/mm")
+  #define MSG_BSTEPS                        _UxGT("Bkroku/mm")
+  #define MSG_CSTEPS                        _UxGT("Ckroku/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xkroku/mm")
+  #define MSG_BSTEPS                        _UxGT("Ykroku/mm")
+  #define MSG_CSTEPS                        _UxGT("Zkroku/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Ekroku/mm")
 #define MSG_E1STEPS                         _UxGT("E1kroku/mm")
 #define MSG_E2STEPS                         _UxGT("E2kroku/mm")
diff --git a/Marlin/src/lcd/language/language_cz_utf8.h b/Marlin/src/lcd/language/language_cz_utf8.h
index dfc3a5a828d5891e69d00598d668414ae13f9385..d4d4b6f674e0aec4d343aeb37c0840614d4989a8 100644
--- a/Marlin/src/lcd/language/language_cz_utf8.h
+++ b/Marlin/src/lcd/language/language_cz_utf8.h
@@ -198,9 +198,15 @@
 #define MSG_SELECT                          _UxGT("Vybrat")
 #define MSG_ACC                             _UxGT("Zrychl")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VELOCITY                        _UxGT("Rychlost")
 #define MSG_VMAX                            _UxGT("Vmax ")
@@ -211,9 +217,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retrakt")
 #define MSG_A_TRAVEL                        _UxGT("A-přejezd")
 #define MSG_STEPS_PER_MM                    _UxGT("Kroků/mm")
-#define MSG_XSTEPS                          _UxGT("Xkroků/mm")
-#define MSG_YSTEPS                          _UxGT("Ykroků/mm")
-#define MSG_ZSTEPS                          _UxGT("Zkroků/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Akroků/mm")
+  #define MSG_BSTEPS                        _UxGT("Bkroků/mm")
+  #define MSG_CSTEPS                        _UxGT("Ckroků/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xkroků/mm")
+  #define MSG_BSTEPS                        _UxGT("Ykroků/mm")
+  #define MSG_CSTEPS                        _UxGT("Zkroků/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Ekroků/mm")
 #define MSG_E1STEPS                         _UxGT("E1kroků/mm")
 #define MSG_E2STEPS                         _UxGT("E2kroků/mm")
diff --git a/Marlin/src/lcd/language/language_da.h b/Marlin/src/lcd/language/language_da.h
index 9755c66aeda8f1a198693365ecaf56199318ca82..390726f75a5d3b35e6d57eac84ef6a0ab70c3efc 100644
--- a/Marlin/src/lcd/language/language_da.h
+++ b/Marlin/src/lcd/language/language_da.h
@@ -97,9 +97,15 @@
 #define MSG_SELECT                          _UxGT("Vælg")
 #define MSG_ACC                             _UxGT("Accel")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -108,9 +114,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-rejse")
 #define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
-#define MSG_XSTEPS                          _UxGT("Xsteps/mm")
-#define MSG_YSTEPS                          _UxGT("Ysteps/mm")
-#define MSG_ZSTEPS                          _UxGT("Zsteps/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Esteps/mm")
 #define MSG_E1STEPS                         _UxGT("E1steps/mm")
 #define MSG_E2STEPS                         _UxGT("E2steps/mm")
diff --git a/Marlin/src/lcd/language/language_de.h b/Marlin/src/lcd/language/language_de.h
index da6c04c9280d47d894ca1f275330bd0d91d53fc5..65844843541849e577354210d1fd7c448d49a0f0 100644
--- a/Marlin/src/lcd/language/language_de.h
+++ b/Marlin/src/lcd/language/language_de.h
@@ -110,9 +110,15 @@
 #define MSG_SELECT                          _UxGT("Auswählen")
 #define MSG_ACC                             _UxGT("A")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("V X Jerk")
-#define MSG_VY_JERK                         _UxGT("V Y Jerk")
-#define MSG_VZ_JERK                         _UxGT("V Z Jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("V A Jerk")
+  #define MSG_VB_JERK                       _UxGT("V B Jerk")
+  #define MSG_VC_JERK                       _UxGT("V C Jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("V X Jerk")
+  #define MSG_VB_JERK                       _UxGT("V Y Jerk")
+  #define MSG_VC_JERK                       _UxGT("V Z Jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("V E Jerk")
 #define MSG_VELOCITY                        _UxGT("Geschwindigkeit")
 #define MSG_VMAX                            _UxGT("V max ") // space by purpose
@@ -123,9 +129,15 @@
 #define MSG_A_RETRACT                       _UxGT("A Retract")
 #define MSG_A_TRAVEL                        _UxGT("A Leerfahrt")
 #define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
-#define MSG_XSTEPS                          _UxGT("X Steps/mm")
-#define MSG_YSTEPS                          _UxGT("Y Steps/mm")
-#define MSG_ZSTEPS                          _UxGT("Z Steps/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A Steps/mm")
+  #define MSG_BSTEPS                        _UxGT("B Steps/mm")
+  #define MSG_CSTEPS                        _UxGT("C Steps/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X Steps/mm")
+  #define MSG_BSTEPS                        _UxGT("Y Steps/mm")
+  #define MSG_CSTEPS                        _UxGT("Z Steps/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E Steps/mm")
 #define MSG_E1STEPS                         _UxGT("E1 Steps/mm")
 #define MSG_E2STEPS                         _UxGT("E2 Steps/mm")
diff --git a/Marlin/src/lcd/language/language_el-gr.h b/Marlin/src/lcd/language/language_el-gr.h
index 2ad323dee5db5e09c5ace7464c6f5793accbeda0..ee1e42e90f5b1aa71764b9c52a54afac4552f0a5 100644
--- a/Marlin/src/lcd/language/language_el-gr.h
+++ b/Marlin/src/lcd/language/language_el-gr.h
@@ -95,10 +95,16 @@
 #define MSG_PID_C                           _UxGT("PID-C")
 #define MSG_ACC                             _UxGT("Επιτάχυνση")
 #define MSG_JERK                            _UxGT("Vαντίδραση")
-#define MSG_VX_JERK                         _UxGT("Vαντίδραση x")
-#define MSG_VY_JERK                         _UxGT("Vαντίδραση y")
-#define MSG_VZ_JERK                         _UxGT("Vαντίδραση z")
-#define MSG_VE_JERK                         _UxGT("Vαντίδραση e")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Vαντίδραση A")
+  #define MSG_VB_JERK                       _UxGT("Vαντίδραση B")
+  #define MSG_VC_JERK                       _UxGT("Vαντίδραση C")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vαντίδραση X")
+  #define MSG_VB_JERK                       _UxGT("Vαντίδραση Y")
+  #define MSG_VC_JERK                       _UxGT("Vαντίδραση Z")
+#endif
+#define MSG_VE_JERK                         _UxGT("Vαντίδραση E")
 #define MSG_VMAX                            _UxGT("Vμεγ ")
 #define MSG_VMIN                            _UxGT("Vελαχ")
 #define MSG_VTRAV_MIN                       _UxGT("Vελάχ. μετατόπιση")
@@ -107,9 +113,15 @@
 #define MSG_A_RETRACT                       _UxGT("Α-ανάσυρση")
 #define MSG_A_TRAVEL                        _UxGT("Α-μετατόπιση")
 #define MSG_STEPS_PER_MM                    _UxGT("Bήματα ανά μμ")
-#define MSG_XSTEPS                          _UxGT("Bήματα X ανά μμ")
-#define MSG_YSTEPS                          _UxGT("Bήματα Υ ανά μμ")
-#define MSG_ZSTEPS                          _UxGT("Bήματα Ζ ανά μμ")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Bήματα A ανά μμ")
+  #define MSG_BSTEPS                        _UxGT("Bήματα B ανά μμ")
+  #define MSG_CSTEPS                        _UxGT("Bήματα C ανά μμ")
+#else
+  #define MSG_ASTEPS                        _UxGT("Bήματα X ανά μμ")
+  #define MSG_BSTEPS                        _UxGT("Bήματα Y ανά μμ")
+  #define MSG_CSTEPS                        _UxGT("Bήματα Z ανά μμ")
+#endif
 #define MSG_ESTEPS                          _UxGT("Bήματα Ε ανά μμ")
 #define MSG_E1STEPS                         _UxGT("Bήματα Ε1 ανά μμ")
 #define MSG_E2STEPS                         _UxGT("Bήματα Ε2 ανά μμ")
diff --git a/Marlin/src/lcd/language/language_el.h b/Marlin/src/lcd/language/language_el.h
index fec01782a26248a9c353f264293e7c8538d31993..e50ec764cabcd16fe020b44f9531446a474decd9 100644
--- a/Marlin/src/lcd/language/language_el.h
+++ b/Marlin/src/lcd/language/language_el.h
@@ -95,10 +95,16 @@
 #define MSG_PID_C                           _UxGT("PID-C")
 #define MSG_ACC                             _UxGT("Επιτάχυνση")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vαντίδραση x")
-#define MSG_VY_JERK                         _UxGT("Vαντίδραση y")
-#define MSG_VZ_JERK                         _UxGT("Vαντίδραση z")
-#define MSG_VE_JERK                         _UxGT("Vαντίδραση e")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Vαντίδραση A")
+  #define MSG_VB_JERK                       _UxGT("Vαντίδραση B")
+  #define MSG_VC_JERK                       _UxGT("Vαντίδραση C")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vαντίδραση X")
+  #define MSG_VB_JERK                       _UxGT("Vαντίδραση Y")
+  #define MSG_VC_JERK                       _UxGT("Vαντίδραση Z")
+#endif
+#define MSG_VE_JERK                         _UxGT("Vαντίδραση E")
 #define MSG_VMAX                            _UxGT("V Μέγιστο")
 #define MSG_VMIN                            _UxGT("V Ελάχιστο")
 #define MSG_VTRAV_MIN                       _UxGT("Vελάχ. μετατόπιση")
@@ -107,9 +113,15 @@
 #define MSG_A_RETRACT                       _UxGT("Α-ανάσυρση")
 #define MSG_A_TRAVEL                        _UxGT("Α-μετατόπιση")
 #define MSG_STEPS_PER_MM                    _UxGT("Bήματα ανά μμ")
-#define MSG_XSTEPS                          _UxGT("Bήματα X ανά μμ")
-#define MSG_YSTEPS                          _UxGT("Bήματα Υ ανά μμ")
-#define MSG_ZSTEPS                          _UxGT("Bήματα Ζ ανά μμ")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Bήματα A ανά μμ")
+  #define MSG_BSTEPS                        _UxGT("Bήματα B ανά μμ")
+  #define MSG_CSTEPS                        _UxGT("Bήματα C ανά μμ")
+#else
+  #define MSG_ASTEPS                        _UxGT("Bήματα X ανά μμ")
+  #define MSG_BSTEPS                        _UxGT("Bήματα Y ανά μμ")
+  #define MSG_CSTEPS                        _UxGT("Bήματα Z ανά μμ")
+#endif
 #define MSG_ESTEPS                          _UxGT("Bήματα Ε ανά μμ")
 #define MSG_E1STEPS                         _UxGT("Bήματα Ε1 ανά μμ")
 #define MSG_E2STEPS                         _UxGT("Bήματα Ε2 ανά μμ")
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index 25ef87133bb57e99b841e49681ec9e9108b5e938..f887b5992eacec5ade73f2868db8f4dfc87e758e 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -509,14 +509,26 @@
 #ifndef MSG_JERK
   #define MSG_JERK                            _UxGT("Jerk")
 #endif
-#ifndef MSG_VX_JERK
-  #define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#endif
-#ifndef MSG_VY_JERK
-  #define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#endif
-#ifndef MSG_VZ_JERK
-  #define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #ifndef MSG_VA_JERK
+    #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #endif
+  #ifndef MSG_VB_JERK
+    #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #endif
+  #ifndef MSG_VC_JERK
+    #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+  #endif
+#else
+  #ifndef MSG_VA_JERK
+    #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #endif
+  #ifndef MSG_VB_JERK
+    #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #endif
+  #ifndef MSG_VC_JERK
+    #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+  #endif
 #endif
 #ifndef MSG_VE_JERK
   #define MSG_VE_JERK                         _UxGT("Ve-jerk")
@@ -548,14 +560,26 @@
 #ifndef MSG_STEPS_PER_MM
   #define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
 #endif
-#ifndef MSG_XSTEPS
-  #define MSG_XSTEPS                          _UxGT("Xsteps/mm")
-#endif
-#ifndef MSG_YSTEPS
-  #define MSG_YSTEPS                          _UxGT("Ysteps/mm")
-#endif
-#ifndef MSG_ZSTEPS
-  #define MSG_ZSTEPS                          _UxGT("Zsteps/mm")
+#if IS_KINEMATIC
+  #ifndef MSG_ASTEPS
+    #define MSG_ASTEPS                        _UxGT("Asteps/mm")
+  #endif
+  #ifndef MSG_BSTEPS
+    #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
+  #endif
+  #ifndef MSG_CSTEPS
+    #define MSG_CSTEPS                        _UxGT("Csteps/mm")
+  #endif
+#else
+  #ifndef MSG_ASTEPS
+    #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
+  #endif
+  #ifndef MSG_BSTEPS
+    #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
+  #endif
+  #ifndef MSG_CSTEPS
+    #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
+  #endif
 #endif
 #ifndef MSG_ESTEPS
   #define MSG_ESTEPS                          _UxGT("Esteps/mm")
diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h
index 6831038b2875f03b910812a0973431c3a90f478f..9cdd209d5f64af3bcc3a647e047f65ce5a607744 100644
--- a/Marlin/src/lcd/language/language_es.h
+++ b/Marlin/src/lcd/language/language_es.h
@@ -103,9 +103,15 @@
 #define MSG_SELECT                          _UxGT("Seleccionar")
 #define MSG_ACC                             _UxGT("Aceleracion")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -115,9 +121,15 @@
 #define MSG_A_RETRACT                       _UxGT("Acel. retrac.")
 #define MSG_A_TRAVEL                        _UxGT("Acel. Viaje")
 #define MSG_STEPS_PER_MM                    _UxGT("Pasos/mm")
-#define MSG_XSTEPS                          _UxGT("X pasos/mm")
-#define MSG_YSTEPS                          _UxGT("Y pasos/mm")
-#define MSG_ZSTEPS                          _UxGT("Z pasos/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A pasos/mm")
+  #define MSG_BSTEPS                        _UxGT("B pasos/mm")
+  #define MSG_CSTEPS                        _UxGT("C pasos/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X pasos/mm")
+  #define MSG_BSTEPS                        _UxGT("Y pasos/mm")
+  #define MSG_CSTEPS                        _UxGT("Z pasos/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E pasos/mm")
 #define MSG_E1STEPS                         _UxGT("E1 pasos/mm")
 #define MSG_E2STEPS                         _UxGT("E2 pasos/mm")
diff --git a/Marlin/src/lcd/language/language_eu.h b/Marlin/src/lcd/language/language_eu.h
index 33452312ea25822b7672c5eb96650c90379cb7af..fd611445e8ed8de99bb29b2299be42e40dd6ffc8 100644
--- a/Marlin/src/lcd/language/language_eu.h
+++ b/Marlin/src/lcd/language/language_eu.h
@@ -103,9 +103,15 @@
 #define MSG_SELECT                          _UxGT("Aukeratu")
 #define MSG_ACC                             _UxGT("Azelerazioa")
 #define MSG_JERK                            _UxGT("Astindua")
-#define MSG_VX_JERK                         _UxGT("Vx-astindua")
-#define MSG_VY_JERK                         _UxGT("Vy-astindua")
-#define MSG_VZ_JERK                         _UxGT("Vz-astindua")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-astindua")
+  #define MSG_VB_JERK                       _UxGT("Vb-astindua")
+  #define MSG_VC_JERK                       _UxGT("Vc-astindua")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-astindua")
+  #define MSG_VB_JERK                       _UxGT("Vy-astindua")
+  #define MSG_VC_JERK                       _UxGT("Vz-astindua")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-astindua")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -115,9 +121,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retrakt")
 #define MSG_A_TRAVEL                        _UxGT("A-bidaia")
 #define MSG_STEPS_PER_MM                    _UxGT("Pausoak/mm")
-#define MSG_XSTEPS                          _UxGT("X pausoak/mm")
-#define MSG_YSTEPS                          _UxGT("Y pausoak/mm")
-#define MSG_ZSTEPS                          _UxGT("Z pausoak/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A pausoak/mm")
+  #define MSG_BSTEPS                        _UxGT("B pausoak/mm")
+  #define MSG_CSTEPS                        _UxGT("C pausoak/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X pausoak/mm")
+  #define MSG_BSTEPS                        _UxGT("Y pausoak/mm")
+  #define MSG_CSTEPS                        _UxGT("Z pausoak/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E pausoak/mm")
 #define MSG_E1STEPS                         _UxGT("E1 pausoak/mm")
 #define MSG_E2STEPS                         _UxGT("E2 pausoak/mm")
diff --git a/Marlin/src/lcd/language/language_fi.h b/Marlin/src/lcd/language/language_fi.h
index f04b0501acf0347c8f3cb95cda965bf0fe065772..174d5c4202c5d3fc2945097ba05f8ca761fee55d 100644
--- a/Marlin/src/lcd/language/language_fi.h
+++ b/Marlin/src/lcd/language/language_fi.h
@@ -87,9 +87,15 @@
 #define MSG_PID_C                           _UxGT("PID-C")
 #define MSG_ACC                             _UxGT("Kiihtyv")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -98,9 +104,15 @@
 #define MSG_AMAX                            _UxGT("Amax ")
 #define MSG_A_RETRACT                       _UxGT("A-peruuta")
 #define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
-#define MSG_XSTEPS                          _UxGT("Xsteps/mm")
-#define MSG_YSTEPS                          _UxGT("Ysteps/mm")
-#define MSG_ZSTEPS                          _UxGT("Zsteps/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Esteps/mm")
 #define MSG_E1STEPS                         _UxGT("E1steps/mm")
 #define MSG_E2STEPS                         _UxGT("E2steps/mm")
diff --git a/Marlin/src/lcd/language/language_fr.h b/Marlin/src/lcd/language/language_fr.h
index 42fb7f4d5b8f50ea376bc116da43ba0624cae86d..c2f2be9a46cf6ba5ee0595e8469aaf53bd8533f0 100644
--- a/Marlin/src/lcd/language/language_fr.h
+++ b/Marlin/src/lcd/language/language_fr.h
@@ -166,9 +166,15 @@
 #define MSG_SELECT                          _UxGT("Selectionner")
 #define MSG_ACC                             _UxGT("Acceleration")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VELOCITY                        _UxGT("Velocite")
 #define MSG_VMAX                            _UxGT("Vmax")
@@ -179,15 +185,21 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-Depl.")
 #define MSG_STEPS_PER_MM                    _UxGT("Pas/mm")
-#define MSG_XSTEPS                          _UxGT("Xpas/mm")
-#define MSG_YSTEPS                          _UxGT("Ypas/mm")
-#define MSG_ZSTEPS                          _UxGT("Zpas/mm")
-#define MSG_ESTEPS                          _UxGT("Epas/mm")
-#define MSG_E1STEPS                         _UxGT("E1pas/mm")
-#define MSG_E2STEPS                         _UxGT("E2pas/mm")
-#define MSG_E3STEPS                         _UxGT("E3pas/mm")
-#define MSG_E4STEPS                         _UxGT("E4pas/mm")
-#define MSG_E5STEPS                         _UxGT("E5pas/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A pas/mm")
+  #define MSG_BSTEPS                        _UxGT("B pas/mm")
+  #define MSG_CSTEPS                        _UxGT("C pas/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X pas/mm")
+  #define MSG_BSTEPS                        _UxGT("Y pas/mm")
+  #define MSG_CSTEPS                        _UxGT("Z pas/mm")
+#endif
+#define MSG_ESTEPS                          _UxGT("E pas/mm")
+#define MSG_E1STEPS                         _UxGT("E1 pas/mm")
+#define MSG_E2STEPS                         _UxGT("E2 pas/mm")
+#define MSG_E3STEPS                         _UxGT("E3 pas/mm")
+#define MSG_E4STEPS                         _UxGT("E4 pas/mm")
+#define MSG_E5STEPS                         _UxGT("E5 pas/mm")
 #define MSG_TEMPERATURE                     _UxGT("Temperature")
 #define MSG_MOTION                          _UxGT("Mouvement")
 #define MSG_FILAMENT                        _UxGT("Filament")
diff --git a/Marlin/src/lcd/language/language_fr_utf8.h b/Marlin/src/lcd/language/language_fr_utf8.h
index 9630f6be098edc3f0b8b771b37009006c107bf55..0a50055c60a459cf424b530e6631267d81e6de65 100644
--- a/Marlin/src/lcd/language/language_fr_utf8.h
+++ b/Marlin/src/lcd/language/language_fr_utf8.h
@@ -166,9 +166,15 @@
 #define MSG_SELECT                          _UxGT("Sélectionner")
 #define MSG_ACC                             _UxGT("Accélération")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VELOCITY                        _UxGT("Vélocité")
 #define MSG_VMAX                            _UxGT("Vmax")
@@ -179,15 +185,21 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-Dépl.")
 #define MSG_STEPS_PER_MM                    _UxGT("Pas/mm")
-#define MSG_XSTEPS                          _UxGT("Xpas/mm")
-#define MSG_YSTEPS                          _UxGT("Ypas/mm")
-#define MSG_ZSTEPS                          _UxGT("Zpas/mm")
-#define MSG_ESTEPS                          _UxGT("Epas/mm")
-#define MSG_E1STEPS                         _UxGT("E1pas/mm")
-#define MSG_E2STEPS                         _UxGT("E2pas/mm")
-#define MSG_E3STEPS                         _UxGT("E3pas/mm")
-#define MSG_E4STEPS                         _UxGT("E4pas/mm")
-#define MSG_E5STEPS                         _UxGT("E5pas/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A pas/mm")
+  #define MSG_BSTEPS                        _UxGT("B pas/mm")
+  #define MSG_CSTEPS                        _UxGT("C pas/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X pas/mm")
+  #define MSG_BSTEPS                        _UxGT("Y pas/mm")
+  #define MSG_CSTEPS                        _UxGT("Z pas/mm")
+#endif
+#define MSG_ESTEPS                          _UxGT("E pas/mm")
+#define MSG_E1STEPS                         _UxGT("E1 pas/mm")
+#define MSG_E2STEPS                         _UxGT("E2 pas/mm")
+#define MSG_E3STEPS                         _UxGT("E3 pas/mm")
+#define MSG_E4STEPS                         _UxGT("E4 pas/mm")
+#define MSG_E5STEPS                         _UxGT("E5 pas/mm")
 #define MSG_TEMPERATURE                     _UxGT("Température")
 #define MSG_MOTION                          _UxGT("Mouvement")
 #define MSG_FILAMENT                        _UxGT("Filament")
diff --git a/Marlin/src/lcd/language/language_gl.h b/Marlin/src/lcd/language/language_gl.h
index 8ee3acbdd98c1b6c0c0015ea72ee7ae001ad4e58..754e95bf13ca62b4fb07f9a118041e6eae8ac4bc 100644
--- a/Marlin/src/lcd/language/language_gl.h
+++ b/Marlin/src/lcd/language/language_gl.h
@@ -97,9 +97,15 @@
 #define MSG_SELECT                          _UxGT("Escolla")
 #define MSG_ACC                             _UxGT("Acel")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -108,15 +114,21 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-travel")
 #define MSG_STEPS_PER_MM                    _UxGT("Pasos/mm")
-#define MSG_XSTEPS                          _UxGT("Xpasos/mm")
-#define MSG_YSTEPS                          _UxGT("Ypasos/mm")
-#define MSG_ZSTEPS                          _UxGT("Zpasos/mm")
-#define MSG_ESTEPS                          _UxGT("Epasos/mm")
-#define MSG_E1STEPS                         _UxGT("E1pasos/mm")
-#define MSG_E2STEPS                         _UxGT("E2pasos/mm")
-#define MSG_E3STEPS                         _UxGT("E3pasos/mm")
-#define MSG_E4STEPS                         _UxGT("E4pasos/mm")
-#define MSG_E5STEPS                         _UxGT("E5pasos/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A pasos/mm")
+  #define MSG_BSTEPS                        _UxGT("B pasos/mm")
+  #define MSG_CSTEPS                        _UxGT("C pasos/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X pasos/mm")
+  #define MSG_BSTEPS                        _UxGT("Y pasos/mm")
+  #define MSG_CSTEPS                        _UxGT("Z pasos/mm")
+#endif
+#define MSG_ESTEPS                          _UxGT("E pasos/mm")
+#define MSG_E1STEPS                         _UxGT("E1 pasos/mm")
+#define MSG_E2STEPS                         _UxGT("E2 pasos/mm")
+#define MSG_E3STEPS                         _UxGT("E3 pasos/mm")
+#define MSG_E4STEPS                         _UxGT("E4 pasos/mm")
+#define MSG_E5STEPS                         _UxGT("E5 pasos/mm")
 #define MSG_TEMPERATURE                     _UxGT("Temperatura")
 #define MSG_MOTION                          _UxGT("Movemento")
 #define MSG_FILAMENT                        _UxGT("Filamento")
diff --git a/Marlin/src/lcd/language/language_hr.h b/Marlin/src/lcd/language/language_hr.h
index 0d435c9f09239195bca73abd38aa051e0a028cee..f9e45737b9920ccaa96519f31119558ac4a44a84 100644
--- a/Marlin/src/lcd/language/language_hr.h
+++ b/Marlin/src/lcd/language/language_hr.h
@@ -95,9 +95,15 @@
 #define MSG_SELECT                          _UxGT("Odaberi")
 #define MSG_ACC                             _UxGT("Accel")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -106,9 +112,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-travel")
 #define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
-#define MSG_XSTEPS                          _UxGT("Xsteps/mm")
-#define MSG_YSTEPS                          _UxGT("Ysteps/mm")
-#define MSG_ZSTEPS                          _UxGT("Zsteps/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Esteps/mm")
 #define MSG_E1STEPS                         _UxGT("E1steps/mm")
 #define MSG_E2STEPS                         _UxGT("E2steps/mm")
diff --git a/Marlin/src/lcd/language/language_it.h b/Marlin/src/lcd/language/language_it.h
index f2986a4ff9144321438194793c092e44137acd86..d529e587180eaf2143ff04fa43dd62dce26cb0c4 100644
--- a/Marlin/src/lcd/language/language_it.h
+++ b/Marlin/src/lcd/language/language_it.h
@@ -166,9 +166,15 @@
 #define MSG_SELECT                          _UxGT("Seleziona")
 #define MSG_ACC                             _UxGT("Accel")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VELOCITY                        _UxGT("Velocità")
 #define MSG_VMAX                            _UxGT("Vmax ")
@@ -179,9 +185,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-Spostamento")
 #define MSG_STEPS_PER_MM                    _UxGT("Passi/mm")
-#define MSG_XSTEPS                          _UxGT("Xpassi/mm")
-#define MSG_YSTEPS                          _UxGT("Ypassi/mm")
-#define MSG_ZSTEPS                          _UxGT("Zpassi/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Apassi/mm")
+  #define MSG_BSTEPS                        _UxGT("Bpassi/mm")
+  #define MSG_CSTEPS                        _UxGT("Cpassi/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xpassi/mm")
+  #define MSG_BSTEPS                        _UxGT("Ypassi/mm")
+  #define MSG_CSTEPS                        _UxGT("Zpassi/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Epassi/mm")
 #define MSG_E1STEPS                         _UxGT("E1passi/mm")
 #define MSG_E2STEPS                         _UxGT("E2passi/mm")
diff --git a/Marlin/src/lcd/language/language_kana.h b/Marlin/src/lcd/language/language_kana.h
index b59607836017ca982e29c474c3f07d429a4ded60..9ee69f2afc9ec8614536df23fb67e010a822a421 100644
--- a/Marlin/src/lcd/language/language_kana.h
+++ b/Marlin/src/lcd/language/language_kana.h
@@ -105,11 +105,18 @@
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
 #define MSG_SELECT                          "\xbe\xdd\xc0\xb8"                                                 // "センタク" ("Select")
+#define MSG_JERK                            "\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                            // ヤクド mm/s ("Jerk")
 #if LCD_WIDTH >= 20
   #define MSG_ACC                           "\xb6\xbf\xb8\xc4\xde mm/s2"                                       // "カソクド mm/s2" ("Accel")
-  #define MSG_VX_JERK                       "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Xジク ヤクド mm/s" ("Vx-jerk")
-  #define MSG_VY_JERK                       "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Yジク ヤクド mm/s" ("Vy-jerk")
-  #define MSG_VZ_JERK                       "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Zジク ヤクド mm/s" ("Vz-jerk")
+  #if IS_KINEMATIC
+    #define MSG_VA_JERK                     "A\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Aジク ヤクド mm/s" ("Va-jerk")
+    #define MSG_VB_JERK                     "B\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Bジク ヤクド mm/s" ("Vb-jerk")
+    #define MSG_VC_JERK                     "C\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Cジク ヤクド mm/s" ("Vc-jerk")
+  #else
+    #define MSG_VA_JERK                     "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Xジク ヤクド mm/s" ("Vx-jerk")
+    #define MSG_VB_JERK                     "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Yジク ヤクド mm/s" ("Vy-jerk")
+    #define MSG_VC_JERK                     "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s"                           // "Zジク ヤクド mm/s" ("Vz-jerk")
+  #endif
   #define MSG_VE_JERK                       "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0\x20\xd4\xb8\xc4\xde"         // "エクストルーダー ヤクド" ("Ve-jerk")
   #define MSG_VMAX                          "\xbb\xb2\xc0\xde\xb2\xb5\xb8\xd8\xbf\xb8\xc4\xde "                // "サイダイオクリソクド " ("Vmax ")
   #define MSG_VMIN                          "\xbb\xb2\xbc\xae\xb3\xb5\xb8\xd8\xbf\xb8\xc4\xde"                 // "サイショウオクリソクド" ("Vmin")
@@ -117,9 +124,15 @@
   #define MSG_AMAX                          "\xbb\xb2\xc0\xde\xb2\xb6\xbf\xb8\xc4\xde "                        // "サイダイカソクド " ("Amax ")
 #else
   #define MSG_ACC                           "\xb6\xbf\xb8\xc4\xde"                                             // "カソクド" ("Accel")
-  #define MSG_VX_JERK                       "X\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                                // "XYジク ヤクド" ("Vx-jerk")
-  #define MSG_VY_JERK                       "Y\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                                // "XYジク ヤクド" ("Vy-jerk")
-  #define MSG_VZ_JERK                       "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde"                                // "Zジク ヤクド" ("Vz-jerk")
+  #if IS_KINEMATIC
+    #define MSG_VA_JERK                     "A\x20\xd4\xb8\xc4\xde"                                            // "Aジク ヤクド" ("Va-jerk")
+    #define MSG_VB_JERK                     "B\x20\xd4\xb8\xc4\xde"                                            // "Bジク ヤクド" ("Vb-jerk")
+    #define MSG_VC_JERK                     "C\x20\xd4\xb8\xc4\xde"                                            // "Cジク ヤクド" ("Vc-jerk")
+  #else
+    #define MSG_VA_JERK                     "X\x20\xd4\xb8\xc4\xde"                                            // "Xジク ヤクド" ("Vx-jerk")
+    #define MSG_VB_JERK                     "Y\x20\xd4\xb8\xc4\xde"                                            // "Yジク ヤクド" ("Vy-jerk")
+    #define MSG_VC_JERK                     "Z\x20\xd4\xb8\xc4\xde"                                            // "Zジク ヤクド" ("Vz-jerk")
+  #endif
   #define MSG_VE_JERK                       "E\x20\xd4\xb8\xc4\xde"                                            // "E ヤクド" ("Ve-jerk")
   #define MSG_VMAX                          "max\xb5\xb8\xd8\xbf\xb8\xc4\xde "                                 // "maxオクリソクド" ("Vmax ")
   #define MSG_VMIN                          "min\xb5\xb8\xd8\xbf\xb8\xc4\xde"                                  // "minオクリソクド" ("Vmin")
@@ -129,27 +142,39 @@
 #define MSG_A_RETRACT                       "\xcb\xb7\xba\xd0\xb6\xbf\xb8\xc4\xde"                             // "ヒキコミカソクド" ("A-retract")
 #define MSG_A_TRAVEL                        "\xb2\xc4\xde\xb3\xb6\xbf\xb8\xc4\xde"                             // "イドウカソクド" ("A-travel")
 #if LCD_WIDTH >= 20
-  #define MSG_STEPS_PER_MM                    "Steps/mm"
-  #define MSG_XSTEPS                          "Xsteps/mm"
-  #define MSG_YSTEPS                          "Ysteps/mm"
-  #define MSG_ZSTEPS                          "Zsteps/mm"
-  #define MSG_ESTEPS                          "Esteps/mm"
-  #define MSG_E1STEPS                         "E1steps/mm"
-  #define MSG_E2STEPS                         "E2steps/mm"
-  #define MSG_E3STEPS                         "E3steps/mm"
-  #define MSG_E4STEPS                         "E4steps/mm"
-  #define MSG_E5STEPS                         "E5steps/mm"
+  #define MSG_STEPS_PER_MM                  "Steps/mm"
+  #if IS_KINEMATIC
+    #define MSG_ASTEPS                      "Asteps/mm"
+    #define MSG_BSTEPS                      "Bsteps/mm"
+    #define MSG_CSTEPS                      "Csteps/mm"
+  #else
+    #define MSG_ASTEPS                      "Xsteps/mm"
+    #define MSG_BSTEPS                      "Ysteps/mm"
+    #define MSG_CSTEPS                      "Zsteps/mm"
+  #endif
+  #define MSG_ESTEPS                        "Esteps/mm"
+  #define MSG_E1STEPS                       "E1steps/mm"
+  #define MSG_E2STEPS                       "E2steps/mm"
+  #define MSG_E3STEPS                       "E3steps/mm"
+  #define MSG_E4STEPS                       "E4steps/mm"
+  #define MSG_E5STEPS                       "E5steps/mm"
 #else
-  #define MSG_STEPS_PER_MM                    "Steps"
-  #define MSG_XSTEPS                          "Xsteps"
-  #define MSG_YSTEPS                          "Ysteps"
-  #define MSG_ZSTEPS                          "Zsteps"
-  #define MSG_ESTEPS                          "Esteps"
-  #define MSG_E1STEPS                         "E1steps"
-  #define MSG_E2STEPS                         "E2steps"
-  #define MSG_E3STEPS                         "E3steps"
-  #define MSG_E4STEPS                         "E4steps"
-  #define MSG_E5STEPS                         "E5steps"
+  #define MSG_STEPS_PER_MM                  "Steps"
+  #if IS_KINEMATIC
+    #define MSG_ASTEPS                      "Asteps"
+    #define MSG_BSTEPS                      "Bsteps"
+    #define MSG_CSTEPS                      "Csteps"
+  #else
+    #define MSG_ASTEPS                      "Xsteps"
+    #define MSG_BSTEPS                      "Ysteps"
+    #define MSG_CSTEPS                      "Zsteps"
+  #endif
+  #define MSG_ESTEPS                        "Esteps"
+  #define MSG_E1STEPS                       "E1steps"
+  #define MSG_E2STEPS                       "E2steps"
+  #define MSG_E3STEPS                       "E3steps"
+  #define MSG_E4STEPS                       "E4steps"
+  #define MSG_E5STEPS                       "E5steps"
 #endif
 #define MSG_TEMPERATURE                     "\xb5\xdd\xc4\xde"                                                 // "オンド" ("Temperature")
 #define MSG_MOTION                          "\xb3\xba\xde\xb7\xbe\xaf\xc3\xb2"                                 // "ウゴキセッテイ" ("Motion")
diff --git a/Marlin/src/lcd/language/language_kana_utf8.h b/Marlin/src/lcd/language/language_kana_utf8.h
index 248bf46eb7c31698125cc44a8fb78653c11782a1..7c7a6eb92abf64636a38648494ceb133df38c4cb 100644
--- a/Marlin/src/lcd/language/language_kana_utf8.h
+++ b/Marlin/src/lcd/language/language_kana_utf8.h
@@ -106,9 +106,15 @@
 #define MSG_SELECT                          _UxGT("センタク")                     // "Select"
 #define MSG_ACC                             _UxGT("カソクド mm/s2")               // "Accel"
 #define MSG_JERK                            _UxGT("ヤクド mm/s")                  // "Jerk"
-#define MSG_VX_JERK                         _UxGT("Xジク ヤクド mm/s")             // "Vx-jerk"
-#define MSG_VY_JERK                         _UxGT("Yジク ヤクド mm/s")             // "Vy-jerk"
-#define MSG_VZ_JERK                         _UxGT("Zジク ヤクド mm/s")             // "Vz-jerk"
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Aジク ヤクド mm/s")             // "Va-jerk"
+  #define MSG_VB_JERK                       _UxGT("Bジク ヤクド mm/s")             // "Vb-jerk"
+  #define MSG_VC_JERK                       _UxGT("Cジク ヤクド mm/s")             // "Vc-jerk"
+#else
+  #define MSG_VA_JERK                       _UxGT("Xジク ヤクド mm/s")             // "Vx-jerk"
+  #define MSG_VB_JERK                       _UxGT("Yジク ヤクド mm/s")             // "Vy-jerk"
+  #define MSG_VC_JERK                       _UxGT("Zジク ヤクド mm/s")             // "Vz-jerk"
+#endif
 #define MSG_VE_JERK                         _UxGT("エクストルーダー ヤクド")          // "Ve-jerk"
 #define MSG_VMAX                            _UxGT("サイダイオクリソクド ")            // "Vmax "
 #define MSG_VMIN                            _UxGT("サイショウオクリソクド")           // "Vmin"
diff --git a/Marlin/src/lcd/language/language_nl.h b/Marlin/src/lcd/language/language_nl.h
index 5283013c19cdc72498d1a617ec9c7b1e7883e439..422115690561662e11f79bc40508afa2cc58a906 100644
--- a/Marlin/src/lcd/language/language_nl.h
+++ b/Marlin/src/lcd/language/language_nl.h
@@ -103,9 +103,15 @@
 #define MSG_SELECT                          _UxGT("Selecteer")
 #define MSG_ACC                             _UxGT("Versn")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -114,9 +120,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retract")
 #define MSG_A_TRAVEL                        _UxGT("A-travel")
 #define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")
-#define MSG_XSTEPS                          _UxGT("Xsteps/mm")
-#define MSG_YSTEPS                          _UxGT("Ysteps/mm")
-#define MSG_ZSTEPS                          _UxGT("Zsteps/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Esteps/mm")
 #define MSG_E1STEPS                         _UxGT("E1steps/mm")
 #define MSG_E2STEPS                         _UxGT("E2steps/mm")
@@ -250,7 +262,7 @@
   #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wacht voor")
   #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament te")
   #define MSG_FILAMENT_CHANGE_LOAD_3          _UxGT("laden")
-        #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Wacht voor print")
+  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Wacht voor print")
   #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("om verder")
   #define MSG_FILAMENT_CHANGE_RESUME_3        _UxGT("te gaan")
 #else // LCD_HEIGHT < 4
diff --git a/Marlin/src/lcd/language/language_pl-DOGM.h b/Marlin/src/lcd/language/language_pl-DOGM.h
index b5584a68381f399429c9fbc12413ec9f23c451a2..d1e9b070da3c5aba08c81cac7a857429590b61e7 100644
--- a/Marlin/src/lcd/language/language_pl-DOGM.h
+++ b/Marlin/src/lcd/language/language_pl-DOGM.h
@@ -91,9 +91,15 @@
 #define MSG_SELECT                          _UxGT("Select")
 #define MSG_ACC                             _UxGT("Przyśpieszenie")
 #define MSG_JERK                            _UxGT("Zryw")
-#define MSG_VX_JERK                         _UxGT("Zryw Vx")
-#define MSG_VY_JERK                         _UxGT("Zryw Vy")
-#define MSG_VZ_JERK                         _UxGT("Zryw Vz")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Zryw Va")
+  #define MSG_VB_JERK                       _UxGT("Zryw Vb")
+  #define MSG_VC_JERK                       _UxGT("Zryw Vc")
+#else
+  #define MSG_VA_JERK                       _UxGT("Zryw Vx")
+  #define MSG_VB_JERK                       _UxGT("Zryw Vy")
+  #define MSG_VC_JERK                       _UxGT("Zryw Vz")
+#endif
 #define MSG_VE_JERK                         _UxGT("Zryw Ve")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -103,9 +109,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-wycofanie")
 #define MSG_A_TRAVEL                        _UxGT("A-przesuń.")
 #define MSG_STEPS_PER_MM                    _UxGT("kroki/mm")
-#define MSG_XSTEPS                          _UxGT("krokiX/mm")
-#define MSG_YSTEPS                          _UxGT("krokiY/mm")
-#define MSG_ZSTEPS                          _UxGT("krokiZ/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("krokiA/mm")
+  #define MSG_BSTEPS                        _UxGT("krokiB/mm")
+  #define MSG_CSTEPS                        _UxGT("krokiC/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("krokiX/mm")
+  #define MSG_BSTEPS                        _UxGT("krokiY/mm")
+  #define MSG_CSTEPS                        _UxGT("krokiZ/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("krokiE/mm")
 #define MSG_E1STEPS                         _UxGT("krokiE1/mm")
 #define MSG_E2STEPS                         _UxGT("krokiE2/mm")
diff --git a/Marlin/src/lcd/language/language_pl-HD44780.h b/Marlin/src/lcd/language/language_pl-HD44780.h
index 3b25a5dd9a4258d601b8e20097b3477e99206162..f884789a5dd29a23238612b324168e1bde426f88 100644
--- a/Marlin/src/lcd/language/language_pl-HD44780.h
+++ b/Marlin/src/lcd/language/language_pl-HD44780.h
@@ -93,9 +93,15 @@
 #define MSG_SELECT                          _UxGT("Select")
 #define MSG_ACC                             _UxGT("Przyspieszenie")
 #define MSG_JERK                            _UxGT("Zryw")
-#define MSG_VX_JERK                         _UxGT("Zryw Vx")
-#define MSG_VY_JERK                         _UxGT("Zryw Vy")
-#define MSG_VZ_JERK                         _UxGT("Zryw Vz")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Zryw Va")
+  #define MSG_VB_JERK                       _UxGT("Zryw Vb")
+  #define MSG_VC_JERK                       _UxGT("Zryw Vc")
+#else
+  #define MSG_VA_JERK                       _UxGT("Zryw Vx")
+  #define MSG_VB_JERK                       _UxGT("Zryw Vy")
+  #define MSG_VC_JERK                       _UxGT("Zryw Vz")
+#endif
 #define MSG_VE_JERK                         _UxGT("Zryw Ve")
 #define MSG_VMAX                            _UxGT("Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -105,9 +111,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-wycofanie")
 #define MSG_A_TRAVEL                        _UxGT("A-przesun.")
 #define MSG_STEPS_PER_MM                    _UxGT("kroki/mm")
-#define MSG_XSTEPS                          _UxGT("krokiX/mm")
-#define MSG_YSTEPS                          _UxGT("krokiY/mm")
-#define MSG_ZSTEPS                          _UxGT("krokiZ/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("krokiA/mm")
+  #define MSG_BSTEPS                        _UxGT("krokiB/mm")
+  #define MSG_CSTEPS                        _UxGT("krokiC/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("krokiX/mm")
+  #define MSG_BSTEPS                        _UxGT("krokiY/mm")
+  #define MSG_CSTEPS                        _UxGT("krokiZ/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("krokiE/mm")
 #define MSG_E1STEPS                         _UxGT("krokiE1/mm")
 #define MSG_E2STEPS                         _UxGT("krokiE2/mm")
diff --git a/Marlin/src/lcd/language/language_pt-br.h b/Marlin/src/lcd/language/language_pt-br.h
index 5ba2956023a24b2040f76375f8277e0f41d2810f..86ea01e4d9e6d13b73e81fbce773d39ad7e595f9 100644
--- a/Marlin/src/lcd/language/language_pt-br.h
+++ b/Marlin/src/lcd/language/language_pt-br.h
@@ -88,9 +88,15 @@
 #define MSG_PID_C                           "PID-C"
 #define MSG_ACC                             "Acc"
 #define MSG_JERK                            "Jogo"
-#define MSG_VX_JERK                         "jogo VX"
-#define MSG_VY_JERK                         "jogo VY"
-#define MSG_VZ_JERK                         "jogo VZ"
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       "jogo VA"
+  #define MSG_VB_JERK                       "jogo VB"
+  #define MSG_VC_JERK                       "jogo VC"
+#else
+  #define MSG_VA_JERK                       "jogo VX"
+  #define MSG_VB_JERK                       "jogo VY"
+  #define MSG_VC_JERK                       "jogo VZ"
+#endif
 #define MSG_VE_JERK                         "jogo VE"
 #define MSG_VMAX                            " Vmax "
 #define MSG_VMIN                            "Vmin"
@@ -99,9 +105,15 @@
 #define MSG_A_RETRACT                       "Retrair A"
 #define MSG_A_TRAVEL                        "A-movimento"
 #define MSG_STEPS_PER_MM                    "Passo/mm"
-#define MSG_XSTEPS                          "Passo X/mm"
-#define MSG_YSTEPS                          "Passo Y/mm"
-#define MSG_ZSTEPS                          "Passo Z/mm"
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        "A/mm"
+  #define MSG_BSTEPS                        "B/mm"
+  #define MSG_CSTEPS                        "C/mm"
+#else
+  #define MSG_ASTEPS                        "X/mm"
+  #define MSG_BSTEPS                        "Y/mm"
+  #define MSG_CSTEPS                        "Z/mm"
+#endif
 #define MSG_ESTEPS                          "E/mm"
 #define MSG_E1STEPS                         "E1/mm"
 #define MSG_E2STEPS                         "E2/mm"
diff --git a/Marlin/src/lcd/language/language_pt-br_utf8.h b/Marlin/src/lcd/language/language_pt-br_utf8.h
index 9c4c9d799602cf9453685c07069c86d41d0de25a..d304b5d8f958dd6b959261652a36cf52a876fa64 100644
--- a/Marlin/src/lcd/language/language_pt-br_utf8.h
+++ b/Marlin/src/lcd/language/language_pt-br_utf8.h
@@ -88,9 +88,15 @@
 #define MSG_PID_C                           _UxGT("PID-C")
 #define MSG_ACC                             _UxGT("Acc")
 #define MSG_JERK                            _UxGT("Jogo")
-#define MSG_VX_JERK                         _UxGT("jogo VX")
-#define MSG_VY_JERK                         _UxGT("jogo VY")
-#define MSG_VZ_JERK                         _UxGT("jogo VZ")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("jogo VA")
+  #define MSG_VB_JERK                       _UxGT("jogo VB")
+  #define MSG_VC_JERK                       _UxGT("jogo VC")
+#else
+  #define MSG_VA_JERK                       _UxGT("jogo VX")
+  #define MSG_VB_JERK                       _UxGT("jogo VY")
+  #define MSG_VC_JERK                       _UxGT("jogo VZ")
+#endif
 #define MSG_VE_JERK                         _UxGT("jogo VE")
 #define MSG_VMAX                            _UxGT(" Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -99,9 +105,15 @@
 #define MSG_A_RETRACT                       _UxGT("Retrair A")
 #define MSG_A_TRAVEL                        _UxGT("A-movimento")
 #define MSG_STEPS_PER_MM                    _UxGT("Passo/mm")
-#define MSG_XSTEPS                          _UxGT("Passo X/mm")
-#define MSG_YSTEPS                          _UxGT("Passo Y/mm")
-#define MSG_ZSTEPS                          _UxGT("Passo Z/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A/mm")
+  #define MSG_BSTEPS                        _UxGT("B/mm")
+  #define MSG_CSTEPS                        _UxGT("C/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X/mm")
+  #define MSG_BSTEPS                        _UxGT("Y/mm")
+  #define MSG_CSTEPS                        _UxGT("Z/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E/mm")
 #define MSG_E1STEPS                         _UxGT("E1/mm")
 #define MSG_E2STEPS                         _UxGT("E2/mm")
diff --git a/Marlin/src/lcd/language/language_pt.h b/Marlin/src/lcd/language/language_pt.h
index 9896005b9f3a67a7743b74cd99f03df38501afb9..b14a290d14fa4936669aed138ee3cd151357842a 100644
--- a/Marlin/src/lcd/language/language_pt.h
+++ b/Marlin/src/lcd/language/language_pt.h
@@ -33,7 +33,7 @@
 #define DISPLAY_CHARSET_ISO10646_1
 #define NOT_EXTENDED_ISO10646_1_5X7
 
-#define WELCOME_MSG                         MACHINE_NAME " pronto."
+#define WELCOME_MSG                         MACHINE_NAME " pronta."
 #define MSG_SD_INSERTED                     "Cartao inserido"
 #define MSG_SD_REMOVED                      "Cartao removido"
 #define MSG_MAIN                            "Menu principal"
@@ -91,10 +91,16 @@
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
 #define MSG_ACC                             "Acc"
-#define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         "Vx-jerk"
-#define MSG_VY_JERK                         "Vy-jerk"
-#define MSG_VZ_JERK                         "Vz-jerk"
+#define MSG_JERK                            "Jerk"
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       "Va-jerk"
+  #define MSG_VB_JERK                       "Vb-jerk"
+  #define MSG_VC_JERK                       "Vc-jerk"
+#else
+  #define MSG_VA_JERK                       "Vx-jerk"
+  #define MSG_VB_JERK                       "Vy-jerk"
+  #define MSG_VC_JERK                       "Vz-jerk"
+#endif
 #define MSG_VE_JERK                         "Ve-jerk"
 #define MSG_VMAX                            " Vmax "
 #define MSG_VMIN                            "Vmin"
@@ -103,9 +109,15 @@
 #define MSG_A_RETRACT                       "A-retraccao"
 #define MSG_A_TRAVEL                        "A-movimento"
 #define MSG_STEPS_PER_MM                    "Passo/mm"
-#define MSG_XSTEPS                          "X passo/mm"
-#define MSG_YSTEPS                          "Y passo/mm"
-#define MSG_ZSTEPS                          "Z passo/mm"
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        "A passo/mm"
+  #define MSG_BSTEPS                        "B passo/mm"
+  #define MSG_CSTEPS                        "C passo/mm"
+#else
+  #define MSG_ASTEPS                        "X passo/mm"
+  #define MSG_BSTEPS                        "Y passo/mm"
+  #define MSG_CSTEPS                        "Z passo/mm"
+#endif
 #define MSG_ESTEPS                          "E passo/mm"
 #define MSG_E1STEPS                         "E1 passo/mm"
 #define MSG_E2STEPS                         "E2 passo/mm"
diff --git a/Marlin/src/lcd/language/language_pt_utf8.h b/Marlin/src/lcd/language/language_pt_utf8.h
index 4d18ae8296841118edfceed4a86bebe5bea55731..56618f7b19a93f3f3eb9d03a5ce0d36176195cb8 100644
--- a/Marlin/src/lcd/language/language_pt_utf8.h
+++ b/Marlin/src/lcd/language/language_pt_utf8.h
@@ -33,7 +33,7 @@
 
 #define DISPLAY_CHARSET_ISO10646_1
 
-#define WELCOME_MSG                         MACHINE_NAME _UxGT(" pronto.")
+#define WELCOME_MSG                         MACHINE_NAME _UxGT(" pronta.")
 #define MSG_SD_INSERTED                     _UxGT("Cartão inserido")
 #define MSG_SD_REMOVED                      _UxGT("Cartão removido")
 #define MSG_MAIN                            _UxGT("Menu principal")
@@ -92,9 +92,15 @@
 #define MSG_PID_C                           _UxGT("PID-C")
 #define MSG_ACC                             _UxGT("Acc")
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-jerk")
-#define MSG_VY_JERK                         _UxGT("Vy-jerk")
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")
 #define MSG_VMAX                            _UxGT(" Vmax ")
 #define MSG_VMIN                            _UxGT("Vmin")
@@ -103,9 +109,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retracção")
 #define MSG_A_TRAVEL                        _UxGT("A-movimento")
 #define MSG_STEPS_PER_MM                    _UxGT("Passo/mm")
-#define MSG_XSTEPS                          _UxGT("X passo/mm")
-#define MSG_YSTEPS                          _UxGT("Y passo/mm")
-#define MSG_ZSTEPS                          _UxGT("Z passo/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A passo/mm")
+  #define MSG_BSTEPS                        _UxGT("B passo/mm")
+  #define MSG_CSTEPS                        _UxGT("C passo/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("X passo/mm")
+  #define MSG_BSTEPS                        _UxGT("Y passo/mm")
+  #define MSG_CSTEPS                        _UxGT("Z passo/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("E passo/mm")
 #define MSG_E1STEPS                         _UxGT("E1 passo/mm")
 #define MSG_E2STEPS                         _UxGT("E2 passo/mm")
diff --git a/Marlin/src/lcd/language/language_ru.h b/Marlin/src/lcd/language/language_ru.h
index 27135a38dbda9dd5ec471aeea1349f33cf6fe120..c139d82e1d81e642e32894bf50c548c1b5af2621 100644
--- a/Marlin/src/lcd/language/language_ru.h
+++ b/Marlin/src/lcd/language/language_ru.h
@@ -165,9 +165,15 @@
 #define MSG_SELECT                          _UxGT("Выбор")
 #define MSG_ACC                             _UxGT("Ускорение")
 #define MSG_JERK                            _UxGT("Рывок")
-#define MSG_VX_JERK                         _UxGT("Vx-рывок")
-#define MSG_VY_JERK                         _UxGT("Vy-рывок")
-#define MSG_VZ_JERK                         _UxGT("Vz-рывок")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-рывок")
+  #define MSG_VB_JERK                       _UxGT("Vb-рывок")
+  #define MSG_VC_JERK                       _UxGT("Vc-рывок")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-рывок")
+  #define MSG_VB_JERK                       _UxGT("Vy-рывок")
+  #define MSG_VC_JERK                       _UxGT("Vz-рывок")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-рывок")
 #define MSG_VELOCITY                        _UxGT("Скорость")
 #define MSG_VMAX                            _UxGT("Vмакс ")
@@ -178,9 +184,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-втягивание")
 #define MSG_A_TRAVEL                        _UxGT("A-путеш.")
 #define MSG_STEPS_PER_MM                    _UxGT("Шаг/мм")
-#define MSG_XSTEPS                          _UxGT("X шаг/мм")
-#define MSG_YSTEPS                          _UxGT("Y шаг/мм")
-#define MSG_ZSTEPS                          _UxGT("Z шаг/мм")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A шаг/мм")
+  #define MSG_BSTEPS                        _UxGT("B шаг/мм")
+  #define MSG_CSTEPS                        _UxGT("C шаг/мм")
+#else
+  #define MSG_ASTEPS                        _UxGT("X шаг/мм")
+  #define MSG_BSTEPS                        _UxGT("Y шаг/мм")
+  #define MSG_CSTEPS                        _UxGT("Z шаг/мм")
+#endif
 #define MSG_ESTEPS                          _UxGT("E шаг/мм")
 #define MSG_E1STEPS                         _UxGT("E1 шаг/мм")
 #define MSG_E2STEPS                         _UxGT("E2 шаг/мм")
diff --git a/Marlin/src/lcd/language/language_sk_utf8.h b/Marlin/src/lcd/language/language_sk_utf8.h
index 28a4660b653c3233e62128619a109de4927872d7..f0284c367f6f0c5b7f9f29d256f2dd671dfff0e6 100644
--- a/Marlin/src/lcd/language/language_sk_utf8.h
+++ b/Marlin/src/lcd/language/language_sk_utf8.h
@@ -170,9 +170,15 @@
 #define MSG_SELECT                          _UxGT("Vybrať")
 #define MSG_ACC                             _UxGT("Zrýchl")
 #define MSG_JERK                            _UxGT("Skok")
-#define MSG_VX_JERK                         _UxGT("Vx-skok")
-#define MSG_VY_JERK                         _UxGT("Vy-skok")
-#define MSG_VZ_JERK                         _UxGT("Vz-skok")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-skok")
+  #define MSG_VB_JERK                       _UxGT("Vb-skok")
+  #define MSG_VC_JERK                       _UxGT("Vc-skok")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-skok")
+  #define MSG_VB_JERK                       _UxGT("Vy-skok")
+  #define MSG_VC_JERK                       _UxGT("Vz-skok")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-skok")
 #define MSG_VELOCITY                        _UxGT("Rýchlosť")
 #define MSG_VMAX                            _UxGT("Vmax ")
@@ -183,9 +189,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-retrakt")
 #define MSG_A_TRAVEL                        _UxGT("A-prejazd")
 #define MSG_STEPS_PER_MM                    _UxGT("Krokov/mm")
-#define MSG_XSTEPS                          _UxGT("Xkrokov/mm")
-#define MSG_YSTEPS                          _UxGT("Ykrokov/mm")
-#define MSG_ZSTEPS                          _UxGT("Zkrokov/mm")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Akrokov/mm")
+  #define MSG_BSTEPS                        _UxGT("Bkrokov/mm")
+  #define MSG_CSTEPS                        _UxGT("Ckrokov/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xkrokov/mm")
+  #define MSG_BSTEPS                        _UxGT("Ykrokov/mm")
+  #define MSG_CSTEPS                        _UxGT("Zkrokov/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Ekrokov/mm")
 #define MSG_E1STEPS                         _UxGT("E1krokov/mm")
 #define MSG_E2STEPS                         _UxGT("E2krokov/mm")
diff --git a/Marlin/src/lcd/language/language_tr.h b/Marlin/src/lcd/language/language_tr.h
index b4b0cc37e8259e66a8ea7e7543a917cb5e5aa7b7..5b4e7409184fd35a31f918fd981f81f998cd3b73 100644
--- a/Marlin/src/lcd/language/language_tr.h
+++ b/Marlin/src/lcd/language/language_tr.h
@@ -107,9 +107,15 @@
 #define MSG_SELECT                          _UxGT("Seç")                                                // Seç
 #define MSG_ACC                             _UxGT("Ä°vme")                                               // Ä°vme
 #define MSG_JERK                            _UxGT("Jerk")
-#define MSG_VX_JERK                         _UxGT("Vx-Jerk")                                            // Vx-Jerk
-#define MSG_VY_JERK                         _UxGT("Vy-Jerk")                                            // Vy-Jerk
-#define MSG_VZ_JERK                         _UxGT("Vz-jerk")                                            // Vz-Jerk
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vb-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vc-jerk")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-jerk")
+  #define MSG_VB_JERK                       _UxGT("Vy-jerk")
+  #define MSG_VC_JERK                       _UxGT("Vz-jerk")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-jerk")                                            // Ve-Jerk
 #define MSG_VMAX                            _UxGT("Vmax ")                                              // Vmax
 #define MSG_VMIN                            _UxGT("Vmin")                                               // Vmin
@@ -117,10 +123,16 @@
 #define MSG_AMAX                            _UxGT("Amax ")                                              // Amax
 #define MSG_A_RETRACT                       _UxGT("A-retract")                                          // A-retract
 #define MSG_A_TRAVEL                        _UxGT("A-travel")                                           // A-travel
-#define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")                                           // Xsteps/mm
-#define MSG_XSTEPS                          _UxGT("Xsteps/mm")                                          // Xsteps/mm
-#define MSG_YSTEPS                          _UxGT("Ysteps/mm")                                          // Ysteps/mm
-#define MSG_ZSTEPS                          _UxGT("Zsteps/mm")                                          // Zsteps/mm
+#define MSG_STEPS_PER_MM                    _UxGT("Steps/mm")                                           // Steps/mm
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Asteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Bsteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Csteps/mm")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xsteps/mm")
+  #define MSG_BSTEPS                        _UxGT("Ysteps/mm")
+  #define MSG_CSTEPS                        _UxGT("Zsteps/mm")
+#endif
 #define MSG_ESTEPS                          _UxGT("Esteps/mm")                                          // Esteps/mm
 #define MSG_E1STEPS                         _UxGT("E1steps/mm")                                         // E1steps/mm
 #define MSG_E2STEPS                         _UxGT("E2steps/mm")                                         // E2steps/mm
diff --git a/Marlin/src/lcd/language/language_uk.h b/Marlin/src/lcd/language/language_uk.h
index 8b92709af89bdf7fdfc59ccb8274dd622a92d081..4dac5d0e84b628aaa0d9cc7270eb1aea8252a649 100644
--- a/Marlin/src/lcd/language/language_uk.h
+++ b/Marlin/src/lcd/language/language_uk.h
@@ -96,9 +96,15 @@
 #define MSG_SELECT                          _UxGT("Вибрати")
 #define MSG_ACC                             _UxGT("Приск.")
 #define MSG_JERK                            _UxGT("Ривок")
-#define MSG_VX_JERK                         _UxGT("Vx-ривок")
-#define MSG_VY_JERK                         _UxGT("Vy-ривок")
-#define MSG_VZ_JERK                         _UxGT("Vz-ривок")
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("Va-ривок")
+  #define MSG_VB_JERK                       _UxGT("Vb-ривок")
+  #define MSG_VC_JERK                       _UxGT("Vc-ривок")
+#else
+  #define MSG_VA_JERK                       _UxGT("Vx-ривок")
+  #define MSG_VB_JERK                       _UxGT("Vy-ривок")
+  #define MSG_VC_JERK                       _UxGT("Vz-ривок")
+#endif
 #define MSG_VE_JERK                         _UxGT("Ve-ривок")
 #define MSG_VMAX                            _UxGT("Vмакс")
 #define MSG_VMIN                            _UxGT("Vмін")
@@ -107,9 +113,15 @@
 #define MSG_A_RETRACT                       _UxGT("A-втягув.")
 #define MSG_A_TRAVEL                        _UxGT("A-руху")
 #define MSG_STEPS_PER_MM                    _UxGT("Кроків/мм")
-#define MSG_XSTEPS                          _UxGT("Xкроків/мм")
-#define MSG_YSTEPS                          _UxGT("Yкроків/мм")
-#define MSG_ZSTEPS                          _UxGT("Zкроків/мм")
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("Aкроків/мм")
+  #define MSG_BSTEPS                        _UxGT("Bкроків/мм")
+  #define MSG_CSTEPS                        _UxGT("Cкроків/мм")
+#else
+  #define MSG_ASTEPS                        _UxGT("Xкроків/мм")
+  #define MSG_BSTEPS                        _UxGT("Yкроків/мм")
+  #define MSG_CSTEPS                        _UxGT("Zкроків/мм")
+#endif
 #define MSG_ESTEPS                          _UxGT("Eкроків/мм")
 #define MSG_E1STEPS                         _UxGT("E1кроків/мм")
 #define MSG_E2STEPS                         _UxGT("E2кроків/мм")
diff --git a/Marlin/src/lcd/language/language_zh_CN.h b/Marlin/src/lcd/language/language_zh_CN.h
index 30f4a75cdb5d0a89a4ab2090c951a9bfc91bf461..f35ae3faa2d01819d9b8ddbf5cba9b8a5a893252 100644
--- a/Marlin/src/lcd/language/language_zh_CN.h
+++ b/Marlin/src/lcd/language/language_zh_CN.h
@@ -93,9 +93,15 @@
 #define MSG_SELECT                          _UxGT("选择")  //"Select"
 #define MSG_ACC                             _UxGT("加速度")  //"Accel" acceleration
 #define MSG_JERK                            _UxGT("抖动速率")  // "Jerk"
-#define MSG_VX_JERK                         _UxGT("X轴抖动速率")  //"Vx-jerk"
-#define MSG_VY_JERK                         _UxGT("Y轴抖动速率")  //"Vy-jerk"
-#define MSG_VZ_JERK                         _UxGT("Z轴抖动速率")  //"Vz-jerk"
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("A轴抖动速率")  //"Va-jerk"
+  #define MSG_VB_JERK                       _UxGT("B轴抖动速率")  //"Vb-jerk"
+  #define MSG_VC_JERK                       _UxGT("C轴抖动速率")  //"Vc-jerk"
+#else
+  #define MSG_VA_JERK                       _UxGT("X轴抖动速率")  //"Vx-jerk"
+  #define MSG_VB_JERK                       _UxGT("Y轴抖动速率")  //"Vy-jerk"
+  #define MSG_VC_JERK                       _UxGT("Z轴抖动速率")  //"Vz-jerk"
+#endif
 #define MSG_VE_JERK                         _UxGT("挤出机抖动速率")  //"Ve-jerk"
 #define MSG_VMAX                            _UxGT("最大进料速率")  //"Vmax " max_feedrate_mm_s
 #define MSG_VMIN                            _UxGT("最小进料速率")  //"Vmin"  min_feedrate_mm_s
@@ -104,9 +110,15 @@
 #define MSG_A_RETRACT                       _UxGT("收进加速度")  //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
 #define MSG_A_TRAVEL                        _UxGT("非打印移动加速度")  //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
 #define MSG_STEPS_PER_MM                    _UxGT("轴步数/mm")  //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
-#define MSG_XSTEPS                          _UxGT("X轴步数/mm")  //"Xsteps/mm" axis_steps_per_mm, axis steps-per-unit G92
-#define MSG_YSTEPS                          _UxGT("Y轴步数/mm")  //"Ysteps/mm"
-#define MSG_ZSTEPS                          _UxGT("Z轴步数/mm")  //"Zsteps/mm"
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A轴步数/mm")  //"Asteps/mm"
+  #define MSG_BSTEPS                        _UxGT("B轴步数/mm")  //"Bsteps/mm"
+  #define MSG_CSTEPS                        _UxGT("C轴步数/mm")  //"Csteps/mm"
+#else
+  #define MSG_ASTEPS                        _UxGT("X轴步数/mm")  //"Xsteps/mm"
+  #define MSG_BSTEPS                        _UxGT("Y轴步数/mm")  //"Ysteps/mm"
+  #define MSG_CSTEPS                        _UxGT("Z轴步数/mm")  //"Zsteps/mm"
+#endif
 #define MSG_ESTEPS                          _UxGT("挤出机步数/mm")  //"Esteps/mm"
 #define MSG_TEMPERATURE                     _UxGT("温度")  //"Temperature"
 #define MSG_MOTION                          _UxGT("运动")  //"Motion"
diff --git a/Marlin/src/lcd/language/language_zh_TW.h b/Marlin/src/lcd/language/language_zh_TW.h
index 39b0e99444d29359ac632746fb976d2b51789d2b..12682c7b13dbe5ac99aa5c8e478c99543eaf01c9 100644
--- a/Marlin/src/lcd/language/language_zh_TW.h
+++ b/Marlin/src/lcd/language/language_zh_TW.h
@@ -93,9 +93,15 @@
 #define MSG_SELECT                          _UxGT("選擇")  //"Select"
 #define MSG_ACC                             _UxGT("加速度")  //"Accel" acceleration
 #define MSG_JERK                            _UxGT("抖動速率")  //"Jerk"
-#define MSG_VX_JERK                         _UxGT("X軸抖動速率")  //"Vx-jerk"
-#define MSG_VY_JERK                         _UxGT("Y軸抖動速率")  //"Vy-jerk"
-#define MSG_VZ_JERK                         _UxGT("Z軸抖動速率")  //"Vz-jerk"
+#if IS_KINEMATIC
+  #define MSG_VA_JERK                       _UxGT("A軸抖動速率")  //"Va-jerk"
+  #define MSG_VB_JERK                       _UxGT("B軸抖動速率")  //"Vb-jerk"
+  #define MSG_VC_JERK                       _UxGT("C軸抖動速率")  //"Vc-jerk"
+#else
+  #define MSG_VA_JERK                       _UxGT("X軸抖動速率")  //"Vx-jerk"
+  #define MSG_VB_JERK                       _UxGT("Y軸抖動速率")  //"Vy-jerk"
+  #define MSG_VC_JERK                       _UxGT("Z軸抖動速率")  //"Vz-jerk"
+#endif
 #define MSG_VE_JERK                         _UxGT("擠出機抖動速率")  //"Ve-jerk"
 #define MSG_VMAX                            _UxGT("最大進料速率")  //"Vmax " max_feedrate_mm_s
 #define MSG_VMIN                            _UxGT("最小進料速率")  //"Vmin"  min_feedrate_mm_s
@@ -104,9 +110,15 @@
 #define MSG_A_RETRACT                       _UxGT("回縮加速度")  //"A-retract" retract_acceleration, E acceleration in mm/s^2 for retracts
 #define MSG_A_TRAVEL                        _UxGT("非列印移動加速度")  //"A-travel" travel_acceleration, X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
 #define MSG_STEPS_PER_MM                    _UxGT("軸步數/mm")  //"Steps/mm" axis_steps_per_mm, axis steps-per-unit G92
-#define MSG_XSTEPS                          _UxGT("X軸步數/mm")  //"Xsteps/mm" axis_steps_per_mm, axis steps-per-unit G92
-#define MSG_YSTEPS                          _UxGT("Y軸步數/mm")  //"Ysteps/mm"
-#define MSG_ZSTEPS                          _UxGT("Z軸步數/mm")  //"Zsteps/mm"
+#if IS_KINEMATIC
+  #define MSG_ASTEPS                        _UxGT("A軸步數/mm")  //"Asteps/mm" axis_steps_per_mm, axis steps-per-unit G92
+  #define MSG_BSTEPS                        _UxGT("B軸步數/mm")  //"Bsteps/mm"
+  #define MSG_CSTEPS                        _UxGT("C軸步數/mm")  //"Csteps/mm"
+#else
+  #define MSG_ASTEPS                        _UxGT("X軸步數/mm")  //"Xsteps/mm" axis_steps_per_mm, axis steps-per-unit G92
+  #define MSG_BSTEPS                        _UxGT("Y軸步數/mm")  //"Ysteps/mm"
+  #define MSG_CSTEPS                        _UxGT("Z軸步數/mm")  //"Zsteps/mm"
+#endif
 #define MSG_ESTEPS                          _UxGT("擠出機步數/mm")  //"Esteps/mm"
 #define MSG_TEMPERATURE                     _UxGT("溫度")  //"Temperature"
 #define MSG_MOTION                          _UxGT("運作")  //"Motion"
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 6d4fdd7ac6569da61b70576bcdc5d1502fc55b1c..2c14acd3f6b02477214db8f105e0f3facf9258f3 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -3511,9 +3511,9 @@ void kill_screen(const char* lcd_msg) {
       MENU_BACK(MSG_MOTION);
 
       // M203 Max Feedrate
-      MENU_ITEM_EDIT(float3, MSG_VMAX MSG_X, &planner.max_feedrate_mm_s[X_AXIS], 1, 999);
-      MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Y, &planner.max_feedrate_mm_s[Y_AXIS], 1, 999);
-      MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Z, &planner.max_feedrate_mm_s[Z_AXIS], 1, 999);
+      MENU_ITEM_EDIT(float3, MSG_VMAX MSG_A, &planner.max_feedrate_mm_s[A_AXIS], 1, 999);
+      MENU_ITEM_EDIT(float3, MSG_VMAX MSG_B, &planner.max_feedrate_mm_s[B_AXIS], 1, 999);
+      MENU_ITEM_EDIT(float3, MSG_VMAX MSG_C, &planner.max_feedrate_mm_s[C_AXIS], 1, 999);
 
       #if ENABLED(DISTINCT_E_FACTORS)
         MENU_ITEM_EDIT(float3, MSG_VMAX MSG_E, &planner.max_feedrate_mm_s[E_AXIS + active_extruder], 1, 999);
@@ -3556,9 +3556,9 @@ void kill_screen(const char* lcd_msg) {
       MENU_ITEM_EDIT(float5, MSG_A_TRAVEL, &planner.travel_acceleration, 100, 99000);
 
       // M201 settings
-      MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &planner.max_acceleration_mm_per_s2[X_AXIS], 100, 99000, _reset_acceleration_rates);
-      MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &planner.max_acceleration_mm_per_s2[Y_AXIS], 100, 99000, _reset_acceleration_rates);
-      MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &planner.max_acceleration_mm_per_s2[Z_AXIS], 10, 99000, _reset_acceleration_rates);
+      MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_A, &planner.max_acceleration_mm_per_s2[A_AXIS], 100, 99000, _reset_acceleration_rates);
+      MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_B, &planner.max_acceleration_mm_per_s2[B_AXIS], 100, 99000, _reset_acceleration_rates);
+      MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_C, &planner.max_acceleration_mm_per_s2[C_AXIS], 10, 99000, _reset_acceleration_rates);
 
       #if ENABLED(DISTINCT_E_FACTORS)
         MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &planner.max_acceleration_mm_per_s2[E_AXIS + active_extruder], 100, 99000, _reset_acceleration_rates);
@@ -3585,12 +3585,12 @@ void kill_screen(const char* lcd_msg) {
       START_MENU();
       MENU_BACK(MSG_MOTION);
 
-      MENU_ITEM_EDIT(float3, MSG_VX_JERK, &planner.max_jerk[X_AXIS], 1, 990);
-      MENU_ITEM_EDIT(float3, MSG_VY_JERK, &planner.max_jerk[Y_AXIS], 1, 990);
+      MENU_ITEM_EDIT(float3, MSG_VA_JERK, &planner.max_jerk[A_AXIS], 1, 990);
+      MENU_ITEM_EDIT(float3, MSG_VB_JERK, &planner.max_jerk[B_AXIS], 1, 990);
       #if ENABLED(DELTA)
-        MENU_ITEM_EDIT(float3, MSG_VZ_JERK, &planner.max_jerk[Z_AXIS], 1, 990);
+        MENU_ITEM_EDIT(float3, MSG_VC_JERK, &planner.max_jerk[C_AXIS], 1, 990);
       #else
-        MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &planner.max_jerk[Z_AXIS], 0.1, 990);
+        MENU_ITEM_EDIT(float52, MSG_VC_JERK, &planner.max_jerk[C_AXIS], 0.1, 990);
       #endif
       MENU_ITEM_EDIT(float3, MSG_VE_JERK, &planner.max_jerk[E_AXIS], 1, 990);
 
@@ -3602,9 +3602,9 @@ void kill_screen(const char* lcd_msg) {
       START_MENU();
       MENU_BACK(MSG_MOTION);
 
-      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_XSTEPS, &planner.axis_steps_per_mm[X_AXIS], 5, 9999, _planner_refresh_positioning);
-      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_YSTEPS, &planner.axis_steps_per_mm[Y_AXIS], 5, 9999, _planner_refresh_positioning);
-      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ZSTEPS, &planner.axis_steps_per_mm[Z_AXIS], 5, 9999, _planner_refresh_positioning);
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ASTEPS, &planner.axis_steps_per_mm[A_AXIS], 5, 9999, _planner_refresh_positioning);
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_BSTEPS, &planner.axis_steps_per_mm[B_AXIS], 5, 9999, _planner_refresh_positioning);
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_CSTEPS, &planner.axis_steps_per_mm[C_AXIS], 5, 9999, _planner_refresh_positioning);
 
       #if ENABLED(DISTINCT_E_FACTORS)
         MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ESTEPS, &planner.axis_steps_per_mm[E_AXIS + active_extruder], 5, 9999, _planner_refresh_positioning);
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index b167365c9afcfc99cfcd73dfaa11ae416fc2a964..5a4f49619e8278dd8042d2f7ef848caf6746f551 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -580,6 +580,7 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
 
     // The approximate length of each segment
     const float inv_segments = 1.0 / float(segments),
+                cartesian_segment_mm = cartesian_mm * inv_segments,
                 segment_distance[XYZE] = {
                   xdiff * inv_segments,
                   ydiff * inv_segments,
@@ -590,6 +591,7 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
     // SERIAL_ECHOPAIR("mm=", cartesian_mm);
     // SERIAL_ECHOPAIR(" seconds=", seconds);
     // SERIAL_ECHOLNPAIR(" segments=", segments);
+    // SERIAL_ECHOLNPAIR(" segment_mm=", cartesian_segment_mm);
 
     #if ENABLED(SCARA_FEEDRATE_SCALING)
       // SCARA needs to scale the feed rate from mm/s to degrees/s
@@ -626,10 +628,10 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
       #if ENABLED(SCARA_FEEDRATE_SCALING)
         // For SCARA scale the feed rate from mm/s to degrees/s
         // i.e., Complete the angular vector in the given time.
-        planner.buffer_segment(delta[A_AXIS], delta[B_AXIS], raw[Z_AXIS], raw[E_AXIS], HYPOT(delta[A_AXIS] - oldA, delta[B_AXIS] - oldB) * inverse_secs, active_extruder);
+        planner.buffer_segment(delta[A_AXIS], delta[B_AXIS], raw[Z_AXIS], raw[E_AXIS], HYPOT(delta[A_AXIS] - oldA, delta[B_AXIS] - oldB) * inverse_secs, active_extruder, cartesian_segment_mm);
         oldA = delta[A_AXIS]; oldB = delta[B_AXIS];
       #else
-        planner.buffer_line(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], raw[E_AXIS], _feedrate_mm_s, active_extruder);
+        planner.buffer_line(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], raw[E_AXIS], _feedrate_mm_s, active_extruder, cartesian_segment_mm);
       #endif
     }
 
@@ -637,9 +639,9 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
     #if ENABLED(SCARA_FEEDRATE_SCALING)
       inverse_kinematics(rtarget);
       ADJUST_DELTA(rtarget);
-      planner.buffer_segment(delta[A_AXIS], delta[B_AXIS], rtarget[Z_AXIS], rtarget[E_AXIS], HYPOT(delta[A_AXIS] - oldA, delta[B_AXIS] - oldB) * inverse_secs, active_extruder);
+      planner.buffer_segment(delta[A_AXIS], delta[B_AXIS], rtarget[Z_AXIS], rtarget[E_AXIS], HYPOT(delta[A_AXIS] - oldA, delta[B_AXIS] - oldB) * inverse_secs, active_extruder, cartesian_segment_mm);
     #else
-      planner.buffer_line_kinematic(rtarget, _feedrate_mm_s, active_extruder);
+      planner.buffer_line_kinematic(rtarget, _feedrate_mm_s, active_extruder, cartesian_segment_mm);
     #endif
 
     return false; // caller will update current_position
@@ -685,6 +687,7 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
 
       // The approximate length of each segment
       const float inv_segments = 1.0 / float(segments),
+                  cartesian_segment_mm = cartesian_mm * inv_segments,
                   segment_distance[XYZE] = {
                     xdiff * inv_segments,
                     ydiff * inv_segments,
@@ -694,6 +697,7 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
 
       // SERIAL_ECHOPAIR("mm=", cartesian_mm);
       // SERIAL_ECHOLNPAIR(" segments=", segments);
+      // SERIAL_ECHOLNPAIR(" segment_mm=", cartesian_segment_mm);
 
       // Get the raw current position as starting point
       float raw[XYZE];
@@ -708,12 +712,12 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
           idle();
         }
         LOOP_XYZE(i) raw[i] += segment_distance[i];
-        planner.buffer_line_kinematic(raw, fr_mm_s, active_extruder);
+        planner.buffer_line_kinematic(raw, fr_mm_s, active_extruder, cartesian_segment_mm);
       }
 
       // Since segment_distance is only approximate,
       // the final move must be to the exact destination.
-      planner.buffer_line_kinematic(destination, fr_mm_s, active_extruder);
+      planner.buffer_line_kinematic(destination, fr_mm_s, active_extruder, cartesian_segment_mm);
     }
 
   #endif // SEGMENT_LEVELED_MOVES
diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp
index cb2915382e7861aa1de07969054b4e5b6832a6ad..8d01afad7e23445bf374015ccc63d2893eaafbe7 100644
--- a/Marlin/src/module/planner.cpp
+++ b/Marlin/src/module/planner.cpp
@@ -726,11 +726,11 @@ void Planner::check_axes_activity() {
  *  fr_mm_s     - (target) speed of the move
  *  extruder    - target extruder
  */
-void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const uint8_t extruder) {
+void Planner::_buffer_steps(const int32_t (&target)[ABCE], float fr_mm_s, const uint8_t extruder, const float &millimeters /*= 0.0*/) {
 
-  const int32_t da = target[X_AXIS] - position[X_AXIS],
-                db = target[Y_AXIS] - position[Y_AXIS],
-                dc = target[Z_AXIS] - position[Z_AXIS];
+  const int32_t da = target[A_AXIS] - position[A_AXIS],
+                db = target[B_AXIS] - position[B_AXIS],
+                dc = target[C_AXIS] - position[C_AXIS];
 
   int32_t de = target[E_AXIS] - position[E_AXIS];
 
@@ -832,13 +832,13 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
     block->steps[C_AXIS] = labs(db - dc);
   #else
     // default non-h-bot planning
-    block->steps[X_AXIS] = labs(da);
-    block->steps[Y_AXIS] = labs(db);
-    block->steps[Z_AXIS] = labs(dc);
+    block->steps[A_AXIS] = labs(da);
+    block->steps[B_AXIS] = labs(db);
+    block->steps[C_AXIS] = labs(dc);
   #endif
 
   block->steps[E_AXIS] = esteps;
-  block->step_event_count = MAX4(block->steps[X_AXIS], block->steps[Y_AXIS], block->steps[Z_AXIS], esteps);
+  block->step_event_count = MAX4(block->steps[A_AXIS], block->steps[B_AXIS], block->steps[C_AXIS], esteps);
 
   // Bail if this is a zero-length block
   if (block->step_event_count < MIN_STEPS_PER_SEGMENT) return;
@@ -1019,17 +1019,17 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
       delta_mm[C_AXIS] = CORESIGN(db - dc) * steps_to_mm[C_AXIS];
     #endif
   #else
-    float delta_mm[XYZE];
-    delta_mm[X_AXIS] = da * steps_to_mm[X_AXIS];
-    delta_mm[Y_AXIS] = db * steps_to_mm[Y_AXIS];
-    delta_mm[Z_AXIS] = dc * steps_to_mm[Z_AXIS];
+    float delta_mm[ABCE];
+    delta_mm[A_AXIS] = da * steps_to_mm[A_AXIS];
+    delta_mm[B_AXIS] = db * steps_to_mm[B_AXIS];
+    delta_mm[C_AXIS] = dc * steps_to_mm[C_AXIS];
   #endif
   delta_mm[E_AXIS] = esteps_float * steps_to_mm[E_AXIS_N];
 
-  if (block->steps[X_AXIS] < MIN_STEPS_PER_SEGMENT && block->steps[Y_AXIS] < MIN_STEPS_PER_SEGMENT && block->steps[Z_AXIS] < MIN_STEPS_PER_SEGMENT) {
+  if (block->steps[A_AXIS] < MIN_STEPS_PER_SEGMENT && block->steps[B_AXIS] < MIN_STEPS_PER_SEGMENT && block->steps[C_AXIS] < MIN_STEPS_PER_SEGMENT) {
     block->millimeters = FABS(delta_mm[E_AXIS]);
   }
-  else {
+  else if (!millimeters) {
     block->millimeters = SQRT(
       #if CORE_IS_XY
         sq(delta_mm[X_HEAD]) + sq(delta_mm[Y_HEAD]) + sq(delta_mm[Z_AXIS])
@@ -1042,6 +1042,9 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
       #endif
     );
   }
+  else
+    block->millimeters = millimeters;
+
   const float inverse_millimeters = 1.0 / block->millimeters;  // Inverse millimeters to remove multiple divides
 
   // Calculate inverse time for this move. No divide by zero due to previous checks.
@@ -1170,7 +1173,7 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
   // Compute and limit the acceleration rate for the trapezoid generator.
   const float steps_per_mm = block->step_event_count * inverse_millimeters;
   uint32_t accel;
-  if (!block->steps[X_AXIS] && !block->steps[Y_AXIS] && !block->steps[Z_AXIS]) {
+  if (!block->steps[A_AXIS] && !block->steps[B_AXIS] && !block->steps[C_AXIS]) {
     // convert to: acceleration steps/sec^2
     accel = CEIL(retract_acceleration * steps_per_mm);
   }
@@ -1200,15 +1203,15 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
 
     // Limit acceleration per axis
     if (block->step_event_count <= cutoff_long) {
-      LIMIT_ACCEL_LONG(X_AXIS, 0);
-      LIMIT_ACCEL_LONG(Y_AXIS, 0);
-      LIMIT_ACCEL_LONG(Z_AXIS, 0);
+      LIMIT_ACCEL_LONG(A_AXIS, 0);
+      LIMIT_ACCEL_LONG(B_AXIS, 0);
+      LIMIT_ACCEL_LONG(C_AXIS, 0);
       LIMIT_ACCEL_LONG(E_AXIS, ACCEL_IDX);
     }
     else {
-      LIMIT_ACCEL_FLOAT(X_AXIS, 0);
-      LIMIT_ACCEL_FLOAT(Y_AXIS, 0);
-      LIMIT_ACCEL_FLOAT(Z_AXIS, 0);
+      LIMIT_ACCEL_FLOAT(A_AXIS, 0);
+      LIMIT_ACCEL_FLOAT(B_AXIS, 0);
+      LIMIT_ACCEL_FLOAT(C_AXIS, 0);
       LIMIT_ACCEL_FLOAT(E_AXIS, ACCEL_IDX);
     }
   }
@@ -1225,9 +1228,9 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
 
     // Compute path unit vector
     double unit_vec[XYZ] = {
-      delta_mm[X_AXIS] * inverse_millimeters,
-      delta_mm[Y_AXIS] * inverse_millimeters,
-      delta_mm[Z_AXIS] * inverse_millimeters
+      delta_mm[A_AXIS] * inverse_millimeters,
+      delta_mm[B_AXIS] * inverse_millimeters,
+      delta_mm[C_AXIS] * inverse_millimeters
     };
 
     /*
@@ -1417,11 +1420,12 @@ void Planner::_buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const
  *
  * Leveling and kinematics should be applied ahead of calling this.
  *
- *  a,b,c,e   - target positions in mm and/or degrees
- *  fr_mm_s   - (target) speed of the move
- *  extruder  - target extruder
+ *  a,b,c,e     - target positions in mm and/or degrees
+ *  fr_mm_s     - (target) speed of the move
+ *  extruder    - target extruder
+ *  millimeters - the length of the movement, if known
  */
-void Planner::buffer_segment(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder) {
+void Planner::buffer_segment(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder, const float &millimeters /*= 0.0*/) {
   // When changing extruders recalculate steps corresponding to the E position
   #if ENABLED(DISTINCT_E_FACTORS)
     if (last_extruder != extruder && axis_steps_per_mm[E_AXIS_N] != axis_steps_per_mm[E_AXIS + last_extruder]) {
@@ -1432,10 +1436,10 @@ void Planner::buffer_segment(const float &a, const float &b, const float &c, con
 
   // The target position of the tool in absolute steps
   // Calculate target position in absolute steps
-  const int32_t target[XYZE] = {
-    LROUND(a * axis_steps_per_mm[X_AXIS]),
-    LROUND(b * axis_steps_per_mm[Y_AXIS]),
-    LROUND(c * axis_steps_per_mm[Z_AXIS]),
+  const int32_t target[ABCE] = {
+    LROUND(a * axis_steps_per_mm[A_AXIS]),
+    LROUND(b * axis_steps_per_mm[B_AXIS]),
+    LROUND(c * axis_steps_per_mm[C_AXIS]),
     LROUND(e * axis_steps_per_mm[E_AXIS_N])
   };
 
@@ -1513,7 +1517,7 @@ void Planner::buffer_segment(const float &a, const float &b, const float &c, con
   if (!blocks_queued()) {
 
     #define _BETWEEN(A) (position[A##_AXIS] + target[A##_AXIS]) >> 1
-    const int32_t between[XYZE] = { _BETWEEN(X), _BETWEEN(Y), _BETWEEN(Z), _BETWEEN(E) };
+    const int32_t between[ABCE] = { _BETWEEN(A), _BETWEEN(B), _BETWEEN(C), _BETWEEN(E) };
     DISABLE_STEPPER_DRIVER_INTERRUPT();
 
     #if ENABLED(LIN_ADVANCE)
@@ -1521,7 +1525,7 @@ void Planner::buffer_segment(const float &a, const float &b, const float &c, con
       lin_dist_e *= 0.5;
     #endif
 
-    _buffer_steps(between, fr_mm_s, extruder);
+    _buffer_steps(between, fr_mm_s, extruder, millimeters * 0.5);
 
     #if ENABLED(LIN_ADVANCE)
       position_float[X_AXIS] = (position_float[X_AXIS] + a) * 0.5;
@@ -1531,12 +1535,12 @@ void Planner::buffer_segment(const float &a, const float &b, const float &c, con
     #endif
 
     const uint8_t next = block_buffer_head;
-    _buffer_steps(target, fr_mm_s, extruder);
+    _buffer_steps(target, fr_mm_s, extruder, millimeters * 0.5);
     SBI(block_buffer[next].flag, BLOCK_BIT_CONTINUED);
     ENABLE_STEPPER_DRIVER_INTERRUPT();
   }
   else
-    _buffer_steps(target, fr_mm_s, extruder);
+    _buffer_steps(target, fr_mm_s, extruder, millimeters);
 
   stepper.wake_up();
 
@@ -1562,9 +1566,9 @@ void Planner::_set_position_mm(const float &a, const float &b, const float &c, c
   #else
     #define _EINDEX E_AXIS
   #endif
-  const int32_t na = position[X_AXIS] = LROUND(a * axis_steps_per_mm[X_AXIS]),
-                nb = position[Y_AXIS] = LROUND(b * axis_steps_per_mm[Y_AXIS]),
-                nc = position[Z_AXIS] = LROUND(c * axis_steps_per_mm[Z_AXIS]),
+  const int32_t na = position[A_AXIS] = LROUND(a * axis_steps_per_mm[A_AXIS]),
+                nb = position[B_AXIS] = LROUND(b * axis_steps_per_mm[B_AXIS]),
+                nc = position[C_AXIS] = LROUND(c * axis_steps_per_mm[C_AXIS]),
                 ne = position[E_AXIS] = LROUND(e * axis_steps_per_mm[_EINDEX]);
   #if ENABLED(LIN_ADVANCE)
     position_float[X_AXIS] = a;
diff --git a/Marlin/src/module/planner.h b/Marlin/src/module/planner.h
index a904caacb533c9459c336da221029402c7344148..e1f3d988d1c4f3641438df779d23c3ed9ff8c861 100644
--- a/Marlin/src/module/planner.h
+++ b/Marlin/src/module/planner.h
@@ -416,8 +416,9 @@ class Planner {
      *  target      - target position in steps units
      *  fr_mm_s     - (target) speed of the move
      *  extruder    - target extruder
+     *  millimeters - the length of the movement, if known
      */
-    static void _buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const uint8_t extruder);
+    static void _buffer_steps(const int32_t (&target)[XYZE], float fr_mm_s, const uint8_t extruder, const float &millimeters = 0.0);
 
     /**
      * Planner::buffer_segment
@@ -426,11 +427,12 @@ class Planner {
      *
      * Leveling and kinematics should be applied ahead of calling this.
      *
-     *  a,b,c,e   - target positions in mm and/or degrees
-     *  fr_mm_s   - (target) speed of the move
-     *  extruder  - target extruder
+     *  a,b,c,e     - target positions in mm and/or degrees
+     *  fr_mm_s     - (target) speed of the move
+     *  extruder    - target extruder
+     *  millimeters - the length of the movement, if known
      */
-    static void buffer_segment(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder);
+    static void buffer_segment(const float &a, const float &b, const float &c, const float &e, const float &fr_mm_s, const uint8_t extruder, const float &millimeters = 0.0);
 
     static void _set_position_mm(const float &a, const float &b, const float &c, const float &e);
 
@@ -445,12 +447,13 @@ class Planner {
      *  rx,ry,rz,e   - target position in mm or degrees
      *  fr_mm_s      - (target) speed of the move (mm/s)
      *  extruder     - target extruder
+     *  millimeters  - the length of the movement, if known
      */
-    FORCE_INLINE static void buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, const float &fr_mm_s, const uint8_t extruder) {
+    FORCE_INLINE static void buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, const float &fr_mm_s, const uint8_t extruder, const float millimeters = 0.0) {
       #if PLANNER_LEVELING && IS_CARTESIAN
         apply_leveling(rx, ry, rz);
       #endif
-      buffer_segment(rx, ry, rz, e, fr_mm_s, extruder);
+      buffer_segment(rx, ry, rz, e, fr_mm_s, extruder, millimeters);
     }
 
     /**
@@ -458,11 +461,12 @@ class Planner {
      * The target is cartesian, it's translated to delta/scara if
      * needed.
      *
-     *  cart     - x,y,z,e CARTESIAN target in mm
-     *  fr_mm_s  - (target) speed of the move (mm/s)
-     *  extruder - target extruder
+     *  cart         - x,y,z,e CARTESIAN target in mm
+     *  fr_mm_s      - (target) speed of the move (mm/s)
+     *  extruder     - target extruder
+     *  millimeters  - the length of the movement, if known
      */
-    FORCE_INLINE static void buffer_line_kinematic(const float (&cart)[XYZE], const float &fr_mm_s, const uint8_t extruder) {
+    FORCE_INLINE static void buffer_line_kinematic(const float (&cart)[XYZE], const float &fr_mm_s, const uint8_t extruder, const float millimeters = 0.0) {
       #if PLANNER_LEVELING
         float raw[XYZ] = { cart[X_AXIS], cart[Y_AXIS], cart[Z_AXIS] };
         apply_leveling(raw);
@@ -471,9 +475,9 @@ class Planner {
       #endif
       #if IS_KINEMATIC
         inverse_kinematics(raw);
-        buffer_segment(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], cart[E_AXIS], fr_mm_s, extruder);
+        buffer_segment(delta[A_AXIS], delta[B_AXIS], delta[C_AXIS], cart[E_AXIS], fr_mm_s, extruder, millimeters);
       #else
-        buffer_segment(raw[X_AXIS], raw[Y_AXIS], raw[Z_AXIS], cart[E_AXIS], fr_mm_s, extruder);
+        buffer_segment(raw[X_AXIS], raw[Y_AXIS], raw[Z_AXIS], cart[E_AXIS], fr_mm_s, extruder, millimeters);
       #endif
     }