From 5b4e39a429bbb485a9d46cc04e369ba8425489ac Mon Sep 17 00:00:00 2001
From: Thomas Moore <tcm0116@gmail.com>
Date: Fri, 2 Feb 2018 18:49:32 -0600
Subject: [PATCH 1/2] Apply feedrate to nozzle movement for kinematic machines

---
 Marlin/Marlin_main.cpp       | 16 ++++---
 Marlin/enum.h                |  3 ++
 Marlin/language.h            | 11 ++++-
 Marlin/language_an.h         | 24 ++++++++---
 Marlin/language_bg.h         | 12 ++++--
 Marlin/language_ca.h         | 24 ++++++++---
 Marlin/language_cn.h         | 15 ++++---
 Marlin/language_cz.h         | 24 ++++++++---
 Marlin/language_cz_utf8.h    | 24 ++++++++---
 Marlin/language_da.h         | 24 ++++++++---
 Marlin/language_de.h         | 24 ++++++++---
 Marlin/language_el-gr.h      | 26 +++++++++---
 Marlin/language_el.h         | 26 +++++++++---
 Marlin/language_en.h         | 56 +++++++++++++++++-------
 Marlin/language_es.h         | 24 ++++++++---
 Marlin/language_eu.h         | 24 ++++++++---
 Marlin/language_fi.h         | 24 ++++++++---
 Marlin/language_fr.h         | 36 ++++++++++------
 Marlin/language_fr_utf8.h    | 36 ++++++++++------
 Marlin/language_gl.h         | 36 ++++++++++------
 Marlin/language_hr.h         | 24 ++++++++---
 Marlin/language_it.h         | 24 ++++++++---
 Marlin/language_kana.h       | 77 +++++++++++++++++++++------------
 Marlin/language_kana_utf8.h  | 12 ++++--
 Marlin/language_nl.h         | 24 ++++++++---
 Marlin/language_pl-DOGM.h    | 24 ++++++++---
 Marlin/language_pl-HD44780.h | 24 ++++++++---
 Marlin/language_pt-br.h      | 24 ++++++++---
 Marlin/language_pt-br_utf8.h | 24 ++++++++---
 Marlin/language_pt.h         | 26 +++++++++---
 Marlin/language_pt_utf8.h    | 24 ++++++++---
 Marlin/language_ru.h         | 24 ++++++++---
 Marlin/language_sk_utf8.h    | 24 ++++++++---
 Marlin/language_tr.h         | 26 +++++++++---
 Marlin/language_uk.h         | 24 ++++++++---
 Marlin/language_zh_CN.h      | 24 ++++++++---
 Marlin/language_zh_TW.h      | 24 ++++++++---
 Marlin/macros.h              |  1 +
 Marlin/planner.cpp           | 82 +++++++++++++++++++-----------------
 Marlin/planner.h             | 30 +++++++------
 Marlin/ultralcd.cpp          | 26 ++++++------
 41 files changed, 758 insertions(+), 323 deletions(-)

diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 1cd0555cdb4..ec8be17091a 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -12370,6 +12370,7 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
 
     // 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,
@@ -12379,6 +12380,7 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
 
     // 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];
@@ -12393,12 +12395,12 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
         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);
   }
 
 #elif ENABLED(MESH_BED_LEVELING)
@@ -12595,6 +12597,7 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
 
     // 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,
@@ -12605,6 +12608,7 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
     // 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
@@ -12642,10 +12646,10 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
       #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
     }
 
@@ -12653,9 +12657,9 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
     #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
diff --git a/Marlin/enum.h b/Marlin/enum.h
index 0aa92c276aa..13858971e2b 100644
--- a/Marlin/enum.h
+++ b/Marlin/enum.h
@@ -57,6 +57,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/language.h b/Marlin/language.h
index 8f9aaff70fc..f6da46f3b25 100644
--- a/Marlin/language.h
+++ b/Marlin/language.h
@@ -240,8 +240,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 "
@@ -282,6 +280,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/language_an.h b/Marlin/language_an.h
index f5245d314c4..121efdfc491 100644
--- a/Marlin/language_an.h
+++ b/Marlin/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/language_bg.h b/Marlin/language_bg.h
index d256af8f482..bf80f49ef8c 100644
--- a/Marlin/language_bg.h
+++ b/Marlin/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/language_ca.h b/Marlin/language_ca.h
index 9af28baf2a8..3103b7cd3a7 100644
--- a/Marlin/language_ca.h
+++ b/Marlin/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/language_cn.h b/Marlin/language_cn.h
index f6230a01397..584dcc4d04b 100644
--- a/Marlin/language_cn.h
+++ b/Marlin/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/language_cz.h b/Marlin/language_cz.h
index ddeae5abe17..9d1123e4f87 100644
--- a/Marlin/language_cz.h
+++ b/Marlin/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/language_cz_utf8.h b/Marlin/language_cz_utf8.h
index 5a6936ae755..73901c425b8 100644
--- a/Marlin/language_cz_utf8.h
+++ b/Marlin/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/language_da.h b/Marlin/language_da.h
index 9755c66aeda..390726f75a5 100644
--- a/Marlin/language_da.h
+++ b/Marlin/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/language_de.h b/Marlin/language_de.h
index da6c04c9280..65844843541 100644
--- a/Marlin/language_de.h
+++ b/Marlin/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/language_el-gr.h b/Marlin/language_el-gr.h
index 2ad323dee5d..ee1e42e90f5 100644
--- a/Marlin/language_el-gr.h
+++ b/Marlin/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/language_el.h b/Marlin/language_el.h
index 0fc9fc8e13d..3062c6d4f0b 100644
--- a/Marlin/language_el.h
+++ b/Marlin/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/language_en.h b/Marlin/language_en.h
index 9d44e6b7749..550698579c6 100644
--- a/Marlin/language_en.h
+++ b/Marlin/language_en.h
@@ -510,14 +510,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")
@@ -549,14 +561,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/language_es.h b/Marlin/language_es.h
index 6831038b287..9cdd209d5f6 100644
--- a/Marlin/language_es.h
+++ b/Marlin/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/language_eu.h b/Marlin/language_eu.h
index 33452312ea2..fd611445e8e 100644
--- a/Marlin/language_eu.h
+++ b/Marlin/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/language_fi.h b/Marlin/language_fi.h
index f04b0501acf..174d5c4202c 100644
--- a/Marlin/language_fi.h
+++ b/Marlin/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/language_fr.h b/Marlin/language_fr.h
index 42fb7f4d5b8..c2f2be9a46c 100644
--- a/Marlin/language_fr.h
+++ b/Marlin/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/language_fr_utf8.h b/Marlin/language_fr_utf8.h
index 9630f6be098..0a50055c60a 100644
--- a/Marlin/language_fr_utf8.h
+++ b/Marlin/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/language_gl.h b/Marlin/language_gl.h
index 8ee3acbdd98..754e95bf13c 100644
--- a/Marlin/language_gl.h
+++ b/Marlin/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/language_hr.h b/Marlin/language_hr.h
index 0d435c9f092..f9e45737b99 100644
--- a/Marlin/language_hr.h
+++ b/Marlin/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/language_it.h b/Marlin/language_it.h
index f2986a4ff91..d529e587180 100644
--- a/Marlin/language_it.h
+++ b/Marlin/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/language_kana.h b/Marlin/language_kana.h
index b5960783601..9ee69f2afc9 100644
--- a/Marlin/language_kana.h
+++ b/Marlin/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/language_kana_utf8.h b/Marlin/language_kana_utf8.h
index 248bf46eb7c..7c7a6eb92ab 100644
--- a/Marlin/language_kana_utf8.h
+++ b/Marlin/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/language_nl.h b/Marlin/language_nl.h
index 8967fd09db1..42211569056 100644
--- a/Marlin/language_nl.h
+++ b/Marlin/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")
diff --git a/Marlin/language_pl-DOGM.h b/Marlin/language_pl-DOGM.h
index b5584a68381..d1e9b070da3 100644
--- a/Marlin/language_pl-DOGM.h
+++ b/Marlin/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/language_pl-HD44780.h b/Marlin/language_pl-HD44780.h
index 3b25a5dd9a4..f884789a5dd 100644
--- a/Marlin/language_pl-HD44780.h
+++ b/Marlin/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/language_pt-br.h b/Marlin/language_pt-br.h
index 5ba2956023a..86ea01e4d9e 100644
--- a/Marlin/language_pt-br.h
+++ b/Marlin/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/language_pt-br_utf8.h b/Marlin/language_pt-br_utf8.h
index 9c4c9d79960..d304b5d8f95 100644
--- a/Marlin/language_pt-br_utf8.h
+++ b/Marlin/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/language_pt.h b/Marlin/language_pt.h
index a07c208c5a7..b14a290d14f 100644
--- a/Marlin/language_pt.h
+++ b/Marlin/language_pt.h
@@ -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/language_pt_utf8.h b/Marlin/language_pt_utf8.h
index 1b01294100b..56618f7b19a 100644
--- a/Marlin/language_pt_utf8.h
+++ b/Marlin/language_pt_utf8.h
@@ -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/language_ru.h b/Marlin/language_ru.h
index 27135a38dbd..c139d82e1d8 100644
--- a/Marlin/language_ru.h
+++ b/Marlin/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/language_sk_utf8.h b/Marlin/language_sk_utf8.h
index 28a4660b653..f0284c367f6 100644
--- a/Marlin/language_sk_utf8.h
+++ b/Marlin/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/language_tr.h b/Marlin/language_tr.h
index b4b0cc37e82..5b4e7409184 100644
--- a/Marlin/language_tr.h
+++ b/Marlin/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/language_uk.h b/Marlin/language_uk.h
index 8b92709af89..4dac5d0e84b 100644
--- a/Marlin/language_uk.h
+++ b/Marlin/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/language_zh_CN.h b/Marlin/language_zh_CN.h
index 30f4a75cdb5..f35ae3faa2d 100644
--- a/Marlin/language_zh_CN.h
+++ b/Marlin/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/language_zh_TW.h b/Marlin/language_zh_TW.h
index 39b0e99444d..12682c7b13d 100644
--- a/Marlin/language_zh_TW.h
+++ b/Marlin/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/macros.h b/Marlin/macros.h
index 10da274db5f..450236c69b1 100644
--- a/Marlin/macros.h
+++ b/Marlin/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/planner.cpp b/Marlin/planner.cpp
index 7486e3bd56f..8b9459903e1 100644
--- a/Marlin/planner.cpp
+++ b/Marlin/planner.cpp
@@ -715,11 +715,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];
 
@@ -821,13 +821,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;
@@ -1008,17 +1008,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])
@@ -1031,6 +1031,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.
@@ -1159,7 +1162,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);
   }
@@ -1189,15 +1192,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);
     }
   }
@@ -1214,9 +1217,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
     };
 
     /*
@@ -1406,11 +1409,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]) {
@@ -1421,10 +1425,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])
   };
 
@@ -1502,7 +1506,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)
@@ -1510,7 +1514,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;
@@ -1520,12 +1524,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();
 
@@ -1551,9 +1555,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/planner.h b/Marlin/planner.h
index 9a16cb0f8a6..678a5325c2d 100644
--- a/Marlin/planner.h
+++ b/Marlin/planner.h
@@ -412,8 +412,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
@@ -422,11 +423,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);
 
@@ -441,12 +443,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);
     }
 
     /**
@@ -454,11 +457,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);
@@ -467,9 +471,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
     }
 
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index 9d8ae529f06..b737f1b9de0 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -3501,9 +3501,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);
@@ -3546,9 +3546,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);
@@ -3575,12 +3575,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);
 
@@ -3592,9 +3592,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);

From d00eb4da5c2c63e948982ada50384efbf1a5e76d Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sat, 3 Feb 2018 22:48:06 -0600
Subject: [PATCH 2/2] Language updates for parity

---
 Marlin/language_cz.h      | 18 +++++++-------
 Marlin/language_cz_utf8.h | 18 +++++++-------
 Marlin/language_el.h      | 50 ---------------------------------------
 Marlin/language_en.h      | 20 +++++++---------
 4 files changed, 27 insertions(+), 79 deletions(-)

diff --git a/Marlin/language_cz.h b/Marlin/language_cz.h
index 9d1123e4f87..1e11af711c3 100644
--- a/Marlin/language_cz.h
+++ b/Marlin/language_cz.h
@@ -149,15 +149,15 @@
 #define MSG_LEDS_ON                         _UxGT("Svetla Zap")
 #define MSG_LEDS_OFF                        _UxGT("Svetla Vyp")
 #define MSG_LED_PRESETS                     _UxGT("Svetla Predvolby")
-#define MSG_SET_LEDS_RED                    _UxGT("Svetla Cervena")
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Svetla Oranzova")
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Svetla Zluta")
-#define MSG_SET_LEDS_GREEN                  _UxGT("Svetla Zelena")
-#define MSG_SET_LEDS_BLUE                   _UxGT("Svetla Modra")
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Svetla Indigo")
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Svetla Fialova")
-#define MSG_SET_LEDS_WHITE                  _UxGT("Svetla Bila")
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Svetla Vychozi")
+#define MSG_SET_LEDS_RED                    _UxGT("Cervena")
+#define MSG_SET_LEDS_ORANGE                 _UxGT("Oranzova")
+#define MSG_SET_LEDS_YELLOW                 _UxGT("Zluta")
+#define MSG_SET_LEDS_GREEN                  _UxGT("Zelena")
+#define MSG_SET_LEDS_BLUE                   _UxGT("Modra")
+#define MSG_SET_LEDS_INDIGO                 _UxGT("Indigo")
+#define MSG_SET_LEDS_VIOLET                 _UxGT("Fialova")
+#define MSG_SET_LEDS_WHITE                  _UxGT("Bila")
+#define MSG_SET_LEDS_DEFAULT                _UxGT("Vychozi")
 #define MSG_CUSTOM_LEDS                     _UxGT("Vlastni svetla")
 #define MSG_INTENSITY_R                     _UxGT("Cervena intenzita")
 #define MSG_INTENSITY_G                     _UxGT("Zelena intezita")
diff --git a/Marlin/language_cz_utf8.h b/Marlin/language_cz_utf8.h
index 73901c425b8..d4d4b6f674e 100644
--- a/Marlin/language_cz_utf8.h
+++ b/Marlin/language_cz_utf8.h
@@ -151,15 +151,15 @@
 #define MSG_LEDS_ON                         _UxGT("Světla Zap")
 #define MSG_LEDS_OFF                        _UxGT("Světla Vyp")
 #define MSG_LED_PRESETS                     _UxGT("Světla Předvolby")
-#define MSG_SET_LEDS_RED                    _UxGT("Světla Červená")
-#define MSG_SET_LEDS_ORANGE                 _UxGT("Světla Oranžová")
-#define MSG_SET_LEDS_YELLOW                 _UxGT("Světla Žlutá")
-#define MSG_SET_LEDS_GREEN                  _UxGT("Světla Zelená")
-#define MSG_SET_LEDS_BLUE                   _UxGT("Světla Modrá")
-#define MSG_SET_LEDS_INDIGO                 _UxGT("Světla Indigo")
-#define MSG_SET_LEDS_VIOLET                 _UxGT("Světla Fialová")
-#define MSG_SET_LEDS_WHITE                  _UxGT("Světla Bílá")
-#define MSG_SET_LEDS_DEFAULT                _UxGT("Světla Výchozí")
+#define MSG_SET_LEDS_RED                    _UxGT("Červená")
+#define MSG_SET_LEDS_ORANGE                 _UxGT("Oranžová")
+#define MSG_SET_LEDS_YELLOW                 _UxGT("Žlutá")
+#define MSG_SET_LEDS_GREEN                  _UxGT("Zelená")
+#define MSG_SET_LEDS_BLUE                   _UxGT("Modrá")
+#define MSG_SET_LEDS_INDIGO                 _UxGT("Indigo")
+#define MSG_SET_LEDS_VIOLET                 _UxGT("Fialová")
+#define MSG_SET_LEDS_WHITE                  _UxGT("Bílá")
+#define MSG_SET_LEDS_DEFAULT                _UxGT("Výchozí")
 #define MSG_CUSTOM_LEDS                     _UxGT("Vlastní světla")
 #define MSG_INTENSITY_R                     _UxGT("Červená intenzita")
 #define MSG_INTENSITY_G                     _UxGT("Zelená intezita")
diff --git a/Marlin/language_el.h b/Marlin/language_el.h
index 3062c6d4f0b..e50ec764cab 100644
--- a/Marlin/language_el.h
+++ b/Marlin/language_el.h
@@ -180,7 +180,6 @@
 #define MSG_ERR_MAXTEMP_BED                 _UxGT("ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
 #define MSG_ERR_MINTEMP_BED                 _UxGT("ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ") //SHORTEN
 #define MSG_HALTED                          _UxGT("H εκτύπωση διακόπηκε")
-#define MSG_PLEASE_RESET                    _UxGT("PLEASE RESET") //TRANSLATE
 #define MSG_HEATING                         _UxGT("Θερμαίνεται…")
 #define MSG_HEATING_COMPLETE                _UxGT("Η θέρμανση ολοκληρώθηκε.") //SHORTEN
 #define MSG_BED_HEATING                     _UxGT("Θέρμανση ΕΠ. Εκτύπωσης") //SHORTEN
@@ -191,53 +190,4 @@
 #define MSG_DELTA_CALIBRATE_Z               _UxGT("Βαθμονόμηση Z")
 #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Βαθμονόμηση κέντρου")
 
-#define MSG_INFO_MENU                       _UxGT("About Printer")
-#define MSG_INFO_PRINTER_MENU               _UxGT("Printer Info")
-#define MSG_INFO_STATS_MENU                 _UxGT("Printer Stats")
-#define MSG_INFO_BOARD_MENU                 _UxGT("Board Info")
-#define MSG_INFO_THERMISTOR_MENU            _UxGT("Thermistors")
-#define MSG_INFO_EXTRUDERS                  _UxGT("Extruders")
-#define MSG_INFO_BAUDRATE                   _UxGT("Baud")
-#define MSG_INFO_PROTOCOL                   _UxGT("Protocol")
-
-#if LCD_WIDTH >= 20
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Print Count")
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Completed  ")
-  #define MSG_INFO_PRINT_TIME               _UxGT("Total Time ")
-#else
-  #define MSG_INFO_PRINT_COUNT              _UxGT("Prints   ")
-  #define MSG_INFO_COMPLETED_PRINTS         _UxGT("Completed")
-  #define MSG_INFO_PRINT_TIME               _UxGT("Duration ")
-#endif
-#define MSG_INFO_MIN_TEMP                   _UxGT("Min Temp")
-#define MSG_INFO_MAX_TEMP                   _UxGT("Max Temp")
-#define MSG_INFO_PSU                        _UxGT("PSU")
-
-#define MSG_FILAMENT_CHANGE_HEADER_PAUSE    _UxGT("CHANGE FILAMENT")
-#define MSG_FILAMENT_CHANGE_OPTION_PURGE    _UxGT("Purge more")
-#define MSG_FILAMENT_CHANGE_OPTION_RESUME   _UxGT("Resume print")
-
-#if LCD_HEIGHT >= 4
-  // Up to 3 lines allowed
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Wait for start")
-  #define MSG_FILAMENT_CHANGE_INIT_2          _UxGT("of the filament")
-  #define MSG_FILAMENT_CHANGE_INIT_3          _UxGT("change")
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Wait for")
-  #define MSG_FILAMENT_CHANGE_UNLOAD_2        _UxGT("filament unload")
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insert filament")
-  #define MSG_FILAMENT_CHANGE_INSERT_2        _UxGT("and press button")
-  #define MSG_FILAMENT_CHANGE_INSERT_3        _UxGT("to continue...")
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Wait for")
-  #define MSG_FILAMENT_CHANGE_LOAD_2          _UxGT("filament load")
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Wait for print")
-  #define MSG_FILAMENT_CHANGE_RESUME_2        _UxGT("to resume")
-#else // LCD_HEIGHT < 4
-  // Up to 2 lines allowed
-  #define MSG_FILAMENT_CHANGE_INIT_1          _UxGT("Please wait...")
-  #define MSG_FILAMENT_CHANGE_UNLOAD_1        _UxGT("Ejecting...")
-  #define MSG_FILAMENT_CHANGE_INSERT_1        _UxGT("Insert and Click")
-  #define MSG_FILAMENT_CHANGE_LOAD_1          _UxGT("Loading...")
-  #define MSG_FILAMENT_CHANGE_RESUME_1        _UxGT("Resuming...")
-#endif
-
 #endif // LANGUAGE_EL_H
diff --git a/Marlin/language_en.h b/Marlin/language_en.h
index 550698579c6..f887b5992ea 100644
--- a/Marlin/language_en.h
+++ b/Marlin/language_en.h
@@ -174,7 +174,6 @@
 #ifndef MSG_USER_MENU
   #define MSG_USER_MENU                       _UxGT("Custom Commands")
 #endif
-
 #ifndef MSG_UBL_DOING_G29
   #define MSG_UBL_DOING_G29                   _UxGT("Doing G29")
 #endif
@@ -375,31 +374,31 @@
   #define MSG_LED_PRESETS                     _UxGT("Light Presets")
 #endif
 #ifndef MSG_SET_LEDS_RED
-  #define MSG_SET_LEDS_RED                    _UxGT("Lights Red")
+  #define MSG_SET_LEDS_RED                    _UxGT("Red")
 #endif
 #ifndef MSG_SET_LEDS_ORANGE
-  #define MSG_SET_LEDS_ORANGE                 _UxGT("Lights Orange")
+  #define MSG_SET_LEDS_ORANGE                 _UxGT("Orange")
 #endif
 #ifndef MSG_SET_LEDS_YELLOW
-  #define MSG_SET_LEDS_YELLOW                 _UxGT("Lights Yellow")
+  #define MSG_SET_LEDS_YELLOW                 _UxGT("Yellow")
 #endif
 #ifndef MSG_SET_LEDS_GREEN
-  #define MSG_SET_LEDS_GREEN                  _UxGT("Lights Green")
+  #define MSG_SET_LEDS_GREEN                  _UxGT("Green")
 #endif
 #ifndef MSG_SET_LEDS_BLUE
-  #define MSG_SET_LEDS_BLUE                   _UxGT("Lights Blue")
+  #define MSG_SET_LEDS_BLUE                   _UxGT("Blue")
 #endif
 #ifndef MSG_SET_LEDS_INDIGO
-  #define MSG_SET_LEDS_INDIGO                 _UxGT("Lights Indigo")
+  #define MSG_SET_LEDS_INDIGO                 _UxGT("Indigo")
 #endif
 #ifndef MSG_SET_LEDS_VIOLET
-  #define MSG_SET_LEDS_VIOLET                 _UxGT("Lights Violet")
+  #define MSG_SET_LEDS_VIOLET                 _UxGT("Violet")
 #endif
 #ifndef MSG_SET_LEDS_WHITE
-  #define MSG_SET_LEDS_WHITE                  _UxGT("Lights White")
+  #define MSG_SET_LEDS_WHITE                  _UxGT("White")
 #endif
 #ifndef MSG_SET_LEDS_DEFAULT
-  #define MSG_SET_LEDS_DEFAULT                _UxGT("Lights Default")
+  #define MSG_SET_LEDS_DEFAULT                _UxGT("Default")
 #endif
 #ifndef MSG_CUSTOM_LEDS
   #define MSG_CUSTOM_LEDS                     _UxGT("Custom Lights")
@@ -939,7 +938,6 @@
     #define MSG_INFO_PRINT_FILAMENT           _UxGT("Extruded")
   #endif
 #endif
-
 #ifndef MSG_INFO_MIN_TEMP
   #define MSG_INFO_MIN_TEMP                   _UxGT("Min Temp")
 #endif