diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index bcecca1dca9ee87c958100192814f251843fb857..9a25b6ac9a1fec9b29b3b06dd2905eee2d5860fa 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp b/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
index 4be4ae4dd437a60212b931bd8085c60dd2f61370..0bcbe416926c8eb2ae33b11983bce3ab77de9277 100644
--- a/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
@@ -35,9 +35,12 @@
 #include "U8glib.h"
 #include "libmaple/fsmc.h"
 #include "libmaple/gpio.h"
+#include "libmaple/dma.h"
 #include "boards.h"
 
-#define LCD_READ_ID     0x04   /* Read display identification information */
+#ifndef LCD_READ_ID
+  #define LCD_READ_ID 0x04   // Read display identification information (0xD3 on ILI9341)
+#endif
 
 /* Timing configuration */
 #define FSMC_ADDRESS_SETUP_TIME   15  // AddressSetupTime
@@ -47,6 +50,10 @@ void LCD_IO_Init(uint8_t cs, uint8_t rs);
 void LCD_IO_WriteData(uint16_t RegValue);
 void LCD_IO_WriteReg(uint16_t Reg);
 uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize);
+#ifdef LCD_USE_DMA_FSMC
+  void LCD_IO_WriteMultiple(uint16_t data, uint32_t count);
+  void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
+#endif
 
 static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
 
@@ -59,21 +66,25 @@ uint8_t u8g_com_stm32duino_fsmc_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi
   static uint8_t isCommand;
 
   switch (msg) {
-    case U8G_COM_MSG_STOP:
-      break;
+    case U8G_COM_MSG_STOP: break;
     case U8G_COM_MSG_INIT:
       u8g_SetPIOutput(u8g, U8G_PI_RESET);
 
+      #ifdef LCD_USE_DMA_FSMC
+        dma_init(FSMC_DMA_DEV);
+        dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+        dma_set_priority(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, DMA_PRIORITY_MEDIUM);
+      #endif
+
       LCD_IO_Init(u8g->pin_list[U8G_PI_CS], u8g->pin_list[U8G_PI_A0]);
-      u8g_Delay(100);
+      u8g_Delay(50);
 
-      if (arg_ptr != nullptr)
+      if (arg_ptr)
         *((uint32_t *)arg_ptr) = LCD_IO_ReadData(LCD_READ_ID, 3);
-
       isCommand = 0;
       break;
 
-    case U8G_COM_MSG_ADDRESS:           // define cmd (arg_val = 0) or data mode (arg_val = 1)
+    case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1)
       isCommand = arg_val == 0 ? 1 : 0;
       break;
 
@@ -89,7 +100,6 @@ uint8_t u8g_com_stm32duino_fsmc_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi
       break;
 
     case U8G_COM_MSG_WRITE_SEQ:
-
       for (uint8_t i = 0; i < arg_val; i += 2)
         LCD_IO_WriteData(*(uint16_t *)(((uint32_t)arg_ptr) + i));
       break;
@@ -107,7 +117,7 @@ __attribute__((always_inline)) __STATIC_INLINE void __DSB(void) {
   __ASM volatile ("dsb 0xF":::"memory");
 }
 
-#define FSMC_CS_NE1  PD7
+#define FSMC_CS_NE1   PD7
 
 #ifdef STM32_XL_DENSITY
   #define FSMC_CS_NE2 PG9
@@ -257,7 +267,7 @@ void LCD_IO_WriteReg(uint16_t Reg) {
 
 uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize) {
   volatile uint32_t data;
-  LCD->REG = (uint16_t)RegValue;
+  LCD->REG = RegValue;
   __DSB();
 
   data = LCD->RAM; // dummy read
@@ -267,9 +277,48 @@ uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize) {
     data <<= 8;
     data |= (LCD->RAM & 0x00FF);
   }
-  return (uint32_t)data;
+  return uint32_t(data);
 }
 
-#endif // HAS_GRAPHICAL_LCD
+#if ENABLED(LCD_USE_DMA_FSMC)
+
+void LCD_IO_WriteMultiple(uint16_t color, uint32_t count) {
+  while (count > 0) {
+    dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, &color, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM);
+    dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, count > 65535 ? 65535 : count);
+    dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+    dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+
+    while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {};
+    dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
 
+    count = count > 65535 ? count - 65535 : 0;
+  }
+}
+
+void LCD_IO_WriteSequence(uint16_t *data, uint16_t length) {
+  dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | DMA_PINC_MODE);
+  dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, length);
+  dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+  dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+
+  while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {};
+  dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+}
+
+void LCD_IO_WriteSequence_Async(uint16_t *data, uint16_t length) {
+  dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | DMA_PINC_MODE);
+  dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, length);
+  dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+  dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+}
+
+void LCD_IO_WaitSequence_Async() {
+  while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {};
+  dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+}
+
+#endif // LCD_USE_DMA_FSMC
+
+#endif // HAS_GRAPHICAL_LCD
 #endif // ARDUINO_ARCH_STM32F1 && FSMC_CS_PIN
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index d94fa51ac4c966efe528d592e11044d4fae3ff84..c248e4814b1b281e52086ef7a32c144719daa629 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -57,6 +57,10 @@
 #include "gcode/parser.h"
 #include "gcode/queue.h"
 
+#if ENABLED(TOUCH_BUTTONS)
+  #include "feature/touch/xpt2046.h"
+#endif
+
 #if ENABLED(HOST_ACTION_COMMANDS)
   #include "feature/host_actions.h"
 #endif
@@ -943,6 +947,10 @@ void setup() {
   // This also updates variables in the planner, elsewhere
   settings.first_load();
 
+  #if ENABLED(TOUCH_BUTTONS)
+    touch.init();
+  #endif
+
   #if HAS_M206_COMMAND
     // Initialize current position based on home_offset
     LOOP_XYZ(a) current_position[a] += home_offset[a];
diff --git a/Marlin/src/feature/touch/xpt2046.cpp b/Marlin/src/feature/touch/xpt2046.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d93e99681955853198b71c8186e6620631492e7b
--- /dev/null
+++ b/Marlin/src/feature/touch/xpt2046.cpp
@@ -0,0 +1,129 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if ENABLED(TOUCH_BUTTONS)
+
+#include "xpt2046.h"
+#include "../../inc/MarlinConfig.h"
+
+#ifndef TOUCH_INT_PIN
+  #define TOUCH_INT_PIN  -1
+#endif
+#ifndef TOUCH_MISO_PIN
+  #define TOUCH_MISO_PIN MISO_PIN
+#endif
+#ifndef TOUCH_MOSI_PIN
+  #define TOUCH_MOSI_PIN MOSI_PIN
+#endif
+#ifndef TOUCH_SCK_PIN
+  #define TOUCH_SCK_PIN  SCK_PIN
+#endif
+#ifndef TOUCH_CS_PIN
+  #define TOUCH_CS_PIN   CS_PIN
+#endif
+
+XPT2046 touch;
+extern int8_t encoderDiff;
+
+void XPT2046::init(void) {
+  SET_INPUT(TOUCH_INT_PIN); // Pendrive interrupt pin, used as polling in getInTouch
+  SET_INPUT(TOUCH_MISO_PIN);
+  SET_OUTPUT(TOUCH_MOSI_PIN);
+
+  OUT_WRITE(TOUCH_SCK_PIN, 0);
+  OUT_WRITE(TOUCH_CS_PIN, 1);
+
+  // Read once to enable pendrive status pin
+  getInTouch(XPT2046_X);
+}
+
+#include "../../lcd/ultralcd.h" // For EN_C bit mask
+
+uint8_t XPT2046::read_buttons() {
+  int16_t tsoffsets[4] = { 0 };
+
+  static uint32_t timeout = 0;
+  if (PENDING(millis(), timeout)) return 0;
+  timeout = millis() + 250;
+
+  if (tsoffsets[0] + tsoffsets[1] == 0) {
+    // Not yet set, so use defines as fallback...
+    tsoffsets[0] = XPT2046_X_CALIBRATION;
+    tsoffsets[1] = XPT2046_X_OFFSET;
+    tsoffsets[2] = XPT2046_Y_CALIBRATION;
+    tsoffsets[3] = XPT2046_Y_OFFSET;
+  }
+
+  // We rely on XPT2046 compatible mode to ADS7843, hence no Z1 and Z2 measurements possible.
+
+  if (READ(TOUCH_INT_PIN)) return 0; // If HIGH there are no screen presses.
+  const uint16_t x = uint16_t(((uint32_t(getInTouch(XPT2046_X))) * tsoffsets[0]) >> 16) + tsoffsets[1],
+                 y = uint16_t(((uint32_t(getInTouch(XPT2046_Y))) * tsoffsets[2]) >> 16) + tsoffsets[3];
+  if (READ(TOUCH_INT_PIN)) return 0; // Fingers must still be on the TS for a valid read.
+
+  if (y < 185 || y > 224) return 0;
+
+       if (WITHIN(x,  21,  98)) encoderDiff = -(ENCODER_STEPS_PER_MENU_ITEM) * ENCODER_PULSES_PER_STEP;
+  else if (WITHIN(x, 121, 198)) encoderDiff =   ENCODER_STEPS_PER_MENU_ITEM  * ENCODER_PULSES_PER_STEP;
+  else if (WITHIN(x, 221, 298)) return EN_C;
+
+  return 0;
+}
+
+uint16_t XPT2046::getInTouch(const XPTCoordinate coordinate) {
+  uint16_t data[3];
+
+  OUT_WRITE(TOUCH_CS_PIN, LOW);
+
+  const uint8_t coord = uint8_t(coordinate) | XPT2046_CONTROL | XPT2046_DFR_MODE;
+  for (uint16_t i = 0; i < 3 ; i++) {
+    for (uint8_t j = 0x80; j; j >>= 1) {
+      WRITE(TOUCH_SCK_PIN, LOW);
+      WRITE(TOUCH_MOSI_PIN, bool(coord & j));
+      WRITE(TOUCH_SCK_PIN, HIGH);
+    }
+
+    data[i] = 0;
+    for (uint16_t j = 0x8000; j; j >>= 1) {
+      WRITE(TOUCH_SCK_PIN, LOW);
+      if (READ(TOUCH_MISO_PIN)) data[i] |= j;
+      WRITE(TOUCH_SCK_PIN, HIGH);
+    }
+    WRITE(TOUCH_SCK_PIN, LOW);
+    data[i] >>= 4;
+  }
+
+  WRITE(TOUCH_CS_PIN, HIGH);
+
+  uint16_t delta01 = _MAX(data[0], data[1]) - _MIN(data[0], data[1]),
+           delta02 = _MAX(data[0], data[2]) - _MIN(data[0], data[2]),
+           delta12 = _MAX(data[1], data[2]) - _MIN(data[1], data[2]);
+
+  if (delta01 <= delta02 && delta01 <= delta12)
+    return (data[0] + data[1]) >> 1;
+
+  if (delta02 <= delta12)
+    return (data[0] + data[2]) >> 1;
+
+  return (data[1] + data[2]) >> 1;
+}
+
+#endif // TOUCH_BUTTONS
diff --git a/Marlin/src/feature/touch/xpt2046.h b/Marlin/src/feature/touch/xpt2046.h
new file mode 100644
index 0000000000000000000000000000000000000000..26814926a474c1bcaa587f54641f7cc1d1978e11
--- /dev/null
+++ b/Marlin/src/feature/touch/xpt2046.h
@@ -0,0 +1,43 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#include <stdint.h>
+
+// Relies on XPT2046-compatible mode of ADS7843,
+// hence no Z1 / Z2 measurements are possible.
+
+#define XPT2046_DFR_MODE 0x00
+#define XPT2046_SER_MODE 0x04
+#define XPT2046_CONTROL  0x80
+
+enum XPTCoordinate : uint8_t {
+  XPT2046_X = 0x10,
+  XPT2046_Y = 0x50
+};
+
+class XPT2046 {
+public:
+  static void init(void);
+  static uint8_t read_buttons();
+private:
+  static uint16_t getInTouch(const XPTCoordinate coordinate);
+};
+
+extern XPT2046 touch;
diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
index ca3d7f5757e8a96110f9c0fd8ddbcee59958b3b6..971bc4c2be6b37bb1699bfc036e2bd8d7d6de32a 100644
--- a/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
+++ b/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
@@ -61,14 +61,21 @@
 
 #include "U8glib.h"
 #include "HAL_LCD_com_defines.h"
-#include "string.h"
+#include <string.h>
+
+#if ENABLED(LCD_USE_DMA_FSMC)
+  extern void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
+  extern void LCD_IO_WriteSequence_Async(uint16_t *data, uint16_t length);
+  extern void LCD_IO_WaitSequence_Async();
+  extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
+#endif
 
 #define WIDTH 128
 #define HEIGHT 64
 #define PAGE_HEIGHT 8
 
 #define X_MIN 32
-#define Y_MIN 56
+#define Y_MIN 32
 #define X_MAX (X_MIN + 2 * WIDTH  - 1)
 #define Y_MAX (Y_MIN + 2 * HEIGHT - 1)
 
@@ -76,6 +83,30 @@
 #define LCD_ROW         0x2B   /* Row address register */
 #define LCD_WRITE_RAM   0x2C
 
+// see https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html
+
+#define COLOR_BLACK 0x0000
+#define COLOR_WHITE 0xFFFF
+#define COLOR_BLUE  0x21DD
+#define COLOR_RED   0xF800
+#define COLOR_DARK  0x0003 // Some dark color
+
+#ifndef TFT_MARLINUI_COLOR
+  #define TFT_MARLINUI_COLOR COLOR_WHITE
+#endif
+#ifndef TFT_MARLINBG_COLOR
+  #define TFT_MARLINBG_COLOR COLOR_BLACK
+#endif
+#ifndef TFT_DISABLED_COLOR
+  #define TFT_DISABLED_COLOR COLOR_DARK
+#endif
+#ifndef TFT_BTSLEFT_COLOR
+  #define TFT_BTSLEFT_COLOR COLOR_BLUE
+#endif
+#ifndef TFT_BTRIGHT_COLOR
+  #define TFT_BTRIGHT_COLOR COLOR_RED
+#endif
+
 static uint32_t lcd_id = 0;
 
 #define U8G_ESC_DATA(x) (uint8_t)(x >> 8), (uint8_t)(x & 0xFF)
@@ -94,6 +125,45 @@ static const uint8_t clear_screen_sequence[] = {
   U8G_ESC_END
 };
 
+#if ENABLED(TOUCH_BUTTONS)
+
+  static const uint8_t separation_line_sequence_left[] = {
+    U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(10), U8G_ESC_DATA(159),
+    U8G_ESC_ADR(0), LCD_ROW,    U8G_ESC_ADR(1), U8G_ESC_DATA(170), U8G_ESC_DATA(173),
+    U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+    U8G_ESC_END
+  };
+
+  static const uint8_t separation_line_sequence_right[] = {
+    U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(160), U8G_ESC_DATA(309),
+    U8G_ESC_ADR(0), LCD_ROW,    U8G_ESC_ADR(1), U8G_ESC_DATA(170), U8G_ESC_DATA(173),
+    U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+    U8G_ESC_END
+  };
+
+  static const uint8_t button0_sequence[] = {
+    U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(20), U8G_ESC_DATA(99),
+    U8G_ESC_ADR(0), LCD_ROW,    U8G_ESC_ADR(1), U8G_ESC_DATA(185), U8G_ESC_DATA(224),
+    U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+    U8G_ESC_END
+  };
+
+  static const uint8_t button1_sequence[] = {
+    U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(120), U8G_ESC_DATA(199),
+    U8G_ESC_ADR(0), LCD_ROW,    U8G_ESC_ADR(1), U8G_ESC_DATA(185), U8G_ESC_DATA(224),
+    U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+    U8G_ESC_END
+  };
+
+  static const uint8_t button2_sequence[] = {
+    U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(220), U8G_ESC_DATA(299),
+    U8G_ESC_ADR(0), LCD_ROW,    U8G_ESC_ADR(1), U8G_ESC_DATA(185), U8G_ESC_DATA(224),
+    U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+    U8G_ESC_END
+  };
+
+#endif
+
 static const uint8_t st7789v_init_sequence[] = { // 0x8552 - ST7789V
   U8G_ESC_ADR(0),
   0x10,
@@ -120,53 +190,254 @@ static const uint8_t st7789v_init_sequence[] = { // 0x8552 - ST7789V
   U8G_ESC_END
 };
 
+static const uint8_t ili9341_init_sequence[] = { // 0x9341 - ILI9341
+  U8G_ESC_ADR(0),
+  0x10,
+  U8G_ESC_DLY(10),
+  0x01,
+  U8G_ESC_DLY(100), U8G_ESC_DLY(100),
+  0x36, U8G_ESC_ADR(1), 0xE8,
+  U8G_ESC_ADR(0), 0x3A, U8G_ESC_ADR(1), 0x55,
+  U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), 0x00, 0x00, 0x01, 0x3F,
+  U8G_ESC_ADR(0), LCD_ROW,    U8G_ESC_ADR(1), 0x00, 0x00, 0x00, 0xEF,
+  U8G_ESC_ADR(0), 0xC5, U8G_ESC_ADR(1), 0x3E, 0x28,
+  U8G_ESC_ADR(0), 0xC7, U8G_ESC_ADR(1), 0x86,
+  U8G_ESC_ADR(0), 0xB1, U8G_ESC_ADR(1), 0x00, 0x18,
+  U8G_ESC_ADR(0), 0xC0, U8G_ESC_ADR(1), 0x23,
+  U8G_ESC_ADR(0), 0xC1, U8G_ESC_ADR(1), 0x10,
+  U8G_ESC_ADR(0), 0x29,
+  U8G_ESC_ADR(0), 0x11,
+  U8G_ESC_DLY(100),
+  U8G_ESC_END
+};
+
+#if ENABLED(TOUCH_BUTTONS)
+
+  static const uint8_t button0[] = {
+     B01111111,B11111111,B11111111,B11111111,B11111110,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00010000,B00000000,B00000001,
+     B10000000,B00000000,B00010000,B00000000,B00000001,
+     B10000000,B01000000,B00010000,B00000000,B00000001,
+     B10000000,B11100000,B00010000,B00000000,B00000001,
+     B10000001,B11110000,B00010000,B00000000,B00000001,
+     B10000011,B11111000,B00010000,B00000000,B00000001,
+     B10000111,B11111100,B00010000,B11111111,B11100001,
+     B10000000,B11100000,B00010000,B11111111,B11100001,
+     B10000000,B11100000,B00010000,B00000000,B00000001,
+     B10000000,B11100000,B00010000,B00000000,B00000001,
+     B10000000,B11100000,B00010000,B00000000,B00000001,
+     B10000000,B11100000,B00010000,B00000000,B00000001,
+     B10000000,B00000000,B00010000,B00000000,B00000001,
+     B10000000,B00000000,B00010000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B01111111,B11111111,B11111111,B11111111,B11111110,
+  };
+
+  static const uint8_t button1[] = {
+     B01111111,B11111111,B11111111,B11111111,B11111110,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00010000,B00000000,B00000001,
+     B10000000,B00000000,B00010000,B00000110,B00000001,
+     B10000000,B11100000,B00010000,B00000110,B00000001,
+     B10000000,B11100000,B00010000,B00000110,B00000001,
+     B10000000,B11100000,B00010000,B00000110,B00000001,
+     B10000000,B11100000,B00010000,B00000110,B00000001,
+     B10000000,B11100000,B00010000,B11111111,B11110001,
+     B10000111,B11111100,B00010000,B11111111,B11110001,
+     B10000011,B11111000,B00010000,B00000110,B00000001,
+     B10000001,B11110000,B00010000,B00000110,B00000001,
+     B10000000,B11100000,B00010000,B00000110,B00000001,
+     B10000000,B01000000,B00010000,B00000110,B00000001,
+     B10000000,B00000000,B00010000,B00000110,B00000001,
+     B10000000,B00000000,B00010000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B01111111,B11111111,B11111111,B11111111,B11111110,
+  };
+
+  static const uint8_t button2[] = {
+     B01111111,B11111111,B11111111,B11111111,B11111110,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000001,B11000000,B00000001,
+     B10000000,B00000000,B01000001,B11000000,B00000001,
+     B10000000,B00000000,B11000001,B11000000,B00000001,
+     B10000000,B00000001,B11111111,B11000000,B00000001,
+     B10000000,B00000011,B11111111,B11000000,B00000001,
+     B10000000,B00000001,B11111111,B11000000,B00000001,
+     B10000000,B00000000,B11000000,B00000000,B00000001,
+     B10000000,B00000000,B01000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B10000000,B00000000,B00000000,B00000000,B00000001,
+     B01111111,B11111111,B11111111,B11111111,B11111110,
+  };
+
+  void drawImage(const uint8_t *data, u8g_t *u8g, u8g_dev_t *dev, uint16_t length, uint16_t height, uint16_t color) {
+    uint16_t buffer[160];
+
+    for (uint16_t i = 0; i < height; i++) {
+      uint16_t k = 0;
+      for (uint16_t j = 0; j < length; j++) {
+        uint16_t v = TFT_MARLINBG_COLOR;
+        if (*(data + (i * (length >> 3) + (j >> 3))) & (0x80 >> (j & 7)))
+          v = color;
+        else
+          v = TFT_MARLINBG_COLOR;
+        buffer[k++] = v; buffer[k++] = v;
+      }
+      #ifdef LCD_USE_DMA_FSMC
+        if (k <= 80) { // generally is... for our buttons
+          memcpy(&buffer[k], &buffer[0], k * sizeof(uint16_t));
+          LCD_IO_WriteSequence(buffer, k * sizeof(uint16_t));
+        }
+        else {
+          LCD_IO_WriteSequence(buffer, k);
+          LCD_IO_WriteSequence(buffer, k);
+        }
+      #else
+        u8g_WriteSequence(u8g, dev, k << 1, (uint8_t *)buffer);
+        u8g_WriteSequence(u8g, dev, k << 1, (uint8_t *)buffer);
+      #endif
+    }
+  }
+
+#endif // TOUCH_BUTTONS
+
+// Used to fill RGB565 (16bits) background
+inline void memset2(const void *ptr, uint16_t fill, size_t cnt) {
+  uint16_t* wptr = (uint16_t*) ptr;
+  for (size_t i = 0; i < cnt; i += 2) {
+     *wptr = fill;
+     wptr++;
+  }
+}
+
+static bool preinit = true;
+static uint8_t page;
+
 uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
   u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
-  uint16_t buffer[256];
-  uint32_t i, j, k;
-
+  #ifdef LCD_USE_DMA_FSMC
+    static uint16_t bufferA[512], bufferB[512];
+    uint16_t* buffer = &bufferA[0];
+    bool allow_async = true;
+  #else
+    uint16_t buffer[256]; // 16-bit RGB 565 pixel line buffer
+  #endif
+  uint16_t i;
   switch (msg) {
     case U8G_DEV_MSG_INIT:
       dev->com_fn(u8g, U8G_COM_MSG_INIT, U8G_SPI_CLK_CYCLE_NONE, &lcd_id);
       if (lcd_id == 0x040404) return 0; // No connected display on FSMC
       if (lcd_id == 0xFFFFFF) return 0; // No connected display on SPI
 
-      memset(buffer, 0x00, sizeof(buffer));
-
       if ((lcd_id & 0xFFFF) == 0x8552)  // ST7789V
         u8g_WriteEscSeqP(u8g, dev, st7789v_init_sequence);
+      if ((lcd_id & 0xFFFF) == 0x9341)  // ILI9341
+        u8g_WriteEscSeqP(u8g, dev, ili9341_init_sequence);
+
+      if (preinit) {
+        preinit = false;
+        return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+      }
 
       u8g_WriteEscSeqP(u8g, dev, clear_screen_sequence);
-      for (i = 0; i < 960; i++)
-        u8g_WriteSequence(u8g, dev, 160, (uint8_t *)buffer);
-      break;
+      #ifdef LCD_USE_DMA_FSMC
+        LCD_IO_WriteMultiple(TFT_MARLINBG_COLOR, (320*240));
+      #else
+        memset2(buffer, TFT_MARLINBG_COLOR, 160);
+        for (uint16_t i = 0; i < 960; i++)
+          u8g_WriteSequence(u8g, dev, 160, (uint8_t *)buffer);
+      #endif
 
-    case U8G_DEV_MSG_STOP:
-      break;
+      // bottom line and buttons
+      #if ENABLED(TOUCH_BUTTONS)
+
+        #ifdef LCD_USE_DMA_FSMC
+          u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_left);
+          LCD_IO_WriteMultiple(TFT_DISABLED_COLOR, 300);
+          u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_right);
+          LCD_IO_WriteMultiple(TFT_DISABLED_COLOR, 300);
+        #else
+          memset2(buffer, TFT_DISABLED_COLOR, 150);
+          u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_left);
+          for (uint8_t i = 4; i--;)
+            u8g_WriteSequence(u8g, dev, 150, (uint8_t *)buffer);
+          u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_right);
+          for (uint8_t i = 4; i--;)
+            u8g_WriteSequence(u8g, dev, 150, (uint8_t *)buffer);
+        #endif
+
+        u8g_WriteEscSeqP(u8g, dev, button0_sequence);
+        drawImage(button0, u8g, dev, 40, 20, TFT_BTSLEFT_COLOR);
+
+        u8g_WriteEscSeqP(u8g, dev, button1_sequence);
+        drawImage(button1, u8g, dev, 40, 20, TFT_BTSLEFT_COLOR);
+
+        u8g_WriteEscSeqP(u8g, dev, button2_sequence);
+        drawImage(button2, u8g, dev, 40, 20, TFT_BTRIGHT_COLOR);
+
+      #endif // TOUCH_BUTTONS
+
+      return 0;
+
+    case U8G_DEV_MSG_STOP: preinit = true; break;
 
     case U8G_DEV_MSG_PAGE_FIRST:
+      page = 0;
       u8g_WriteEscSeqP(u8g, dev, page_first_sequence);
       break;
 
     case U8G_DEV_MSG_PAGE_NEXT:
-      for (j = 0; j < 8; j++) {
-        k = 0;
-        for (i = 0; i < (uint32_t)pb->width; i++) {
+      if (++page > 8) return 1;
+
+      for (uint8_t y = 0; y < 8; y++) {
+        uint32_t k = 0;
+        #ifdef LCD_USE_DMA_FSMC
+          buffer = (y & 1) ? bufferB : bufferA;
+        #endif
+        for (uint16_t i = 0; i < (uint32_t)pb->width; i++) {
           const uint8_t b = *(((uint8_t *)pb->buf) + i);
-          const uint16_t c = TEST(b, j) ? 0x7FFF : 0x0000;
+          const uint16_t c = TEST(b, y) ? TFT_MARLINUI_COLOR : TFT_MARLINBG_COLOR;
           buffer[k++] = c; buffer[k++] = c;
         }
-        for (k = 0; k < 2; k++) {
-          u8g_WriteSequence(u8g, dev, 128, (uint8_t*)buffer);
-          u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[64]));
-          u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[128]));
-          u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[192]));
-        }
+        #ifdef LCD_USE_DMA_FSMC
+          memcpy(&buffer[256], &buffer[0], 512);
+          if (allow_async) {
+            if (y > 0 || page > 1) LCD_IO_WaitSequence_Async();
+            if (y == 7 && page == 8)
+              LCD_IO_WriteSequence(buffer, 512); // last line of last page
+            else
+              LCD_IO_WriteSequence_Async(buffer, 512);
+          }
+          else
+            LCD_IO_WriteSequence(buffer, 512);
+        #else
+          for (uint8_t i = 2; i--;) {
+            u8g_WriteSequence(u8g, dev, 128, (uint8_t*)buffer);
+            u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[64]));
+            u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[128]));
+            u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[192]));
+          }
+        #endif
       }
       break;
 
     case U8G_DEV_MSG_SLEEP_ON:
+      // Enter Sleep Mode (10h)
+      return 1;
     case U8G_DEV_MSG_SLEEP_OFF:
+      // Sleep Out (11h)
       return 1;
   }
   return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
@@ -174,4 +445,4 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u
 
 U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tft_320x240_upscale_from_128x64_fn, U8G_COM_HAL_FSMC_FN);
 
-#endif // HAS_GRAPHICAL_LCD
+#endif // HAS_GRAPHICAL_LCD && FSMC_CS
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 2fb2b209e9f3d779205542e969c8a6ab7294a3a4..169aa2f6f6fa245166a5003cd7cbd5b4f817a10f 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -102,6 +102,11 @@
   #if HAS_SLOW_BUTTONS
     volatile uint8_t MarlinUI::slow_buttons;
   #endif
+  #if ENABLED(TOUCH_BUTTONS)
+    #include "../feature/touch/xpt2046.h"
+    volatile uint8_t MarlinUI::touch_buttons;
+    uint8_t MarlinUI::read_touch_buttons() { return touch.read_buttons(); }
+  #endif
 #endif
 
 #if ENABLED(INIT_SDCARD_ON_BOOT)
@@ -324,8 +329,13 @@ void MarlinUI::init() {
     #endif
   #endif
 
-  #if HAS_ENCODER_ACTION && HAS_SLOW_BUTTONS
-    slow_buttons = 0;
+  #if HAS_ENCODER_ACTION
+    #if HAS_SLOW_BUTTONS
+      slow_buttons = 0;
+    #endif
+    #if ENABLED(TOUCH_BUTTONS)
+      touch_buttons = 0;
+    #endif
   #endif
 
   update_buttons();
@@ -823,6 +833,11 @@ void MarlinUI::update() {
 
     next_lcd_update_ms = ms + LCD_UPDATE_INTERVAL;
 
+    #if ENABLED(TOUCH_BUTTONS)
+      if (on_status_screen())
+        next_lcd_update_ms += (LCD_UPDATE_INTERVAL) * 2;
+    #endif
+
     #if ENABLED(LCD_HAS_STATUS_INDICATORS)
       update_indicators();
     #endif
@@ -833,6 +848,10 @@ void MarlinUI::update() {
         slow_buttons = read_slow_buttons(); // Buttons that take too long to read in interrupt context
       #endif
 
+      #if ENABLED(TOUCH_BUTTONS)
+        touch_buttons = read_touch_buttons();
+      #endif
+
       #if ENABLED(REPRAPWORLD_KEYPAD)
 
         if (handle_keypad()) {
@@ -1180,6 +1199,9 @@ void MarlinUI::update() {
           #if HAS_SLOW_BUTTONS
             | slow_buttons
           #endif
+          #if ENABLED(TOUCH_BUTTONS)
+            | touch_buttons
+          #endif
         ;
       #elif HAS_ADC_BUTTONS
         buttons = 0;
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 5a63f67e87849e6682860e983cd0254e5fa801aa..2325b5b9591736342327a5a096964548db5ee9ee 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -56,7 +56,11 @@
     uint8_t get_ADC_keyValue();
   #endif
 
-  #define LCD_UPDATE_INTERVAL 100
+  #if ENABLED(TOUCH_BUTTONS)
+    #define LCD_UPDATE_INTERVAL 50
+  #else
+    #define LCD_UPDATE_INTERVAL 100
+  #endif
 
   #if HAS_LCD_MENU
 
@@ -497,6 +501,11 @@ public:
       static volatile uint8_t slow_buttons;
       static uint8_t read_slow_buttons();
     #endif
+    #if ENABLED(TOUCH_BUTTONS)
+      static volatile uint8_t touch_buttons;
+      static uint8_t read_touch_buttons();
+    #endif
+
     static void update_buttons();
     static inline bool button_pressed() { return BUTTON_CLICK(); }
     #if EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION)
diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h
index 26968ed007b07d6a9462e1f039ab3e5cb37edcf2..19bdb0aad60ba1a62c80703f2463005b0eeeab7a 100644
--- a/Marlin/src/pins/pinsDebug_list.h
+++ b/Marlin/src/pins/pinsDebug_list.h
@@ -1160,3 +1160,15 @@
 #if PIN_EXISTS(FET_SAFETY)
   REPORT_NAME_DIGITAL(__LINE__, FET_SAFETY_PIN)
 #endif
+#if PIN_EXISTS(TOUCH_MISO)
+  REPORT_NAME_DIGITAL(__LINE__, TOUCH_MISO_PIN)
+#endif
+#if PIN_EXISTS(TOUCH_MOSI)
+  REPORT_NAME_DIGITAL(__LINE__, TOUCH_MOSI_PIN)
+#endif
+#if PIN_EXISTS(TOUCH_SCK)
+  REPORT_NAME_DIGITAL(__LINE__, TOUCH_SCK_PIN)
+#endif
+#if PIN_EXISTS(TOUCH_CS)
+  REPORT_NAME_DIGITAL(__LINE__, TOUCH_CS_PIN)
+#endif
diff --git a/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
index 2697bbe2da118036b15097524bef025f271dd4fb..3b944a5dd050f38dff931b3c91568ed267b94406 100644
--- a/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
+++ b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
@@ -103,13 +103,13 @@
 //
 #if ENABLED(TMC_USE_SW_SPI)
   #ifndef TMC_SW_MOSI
-    #define TMC_SW_MOSI      PC12
+    #define TMC_SW_MOSI    PC12
   #endif
   #ifndef TMC_SW_MISO
-    #define TMC_SW_MISO      PC11
+    #define TMC_SW_MISO    PC11
   #endif
   #ifndef TMC_SW_SCK
-    #define TMC_SW_SCK       PC10
+    #define TMC_SW_SCK     PC10
   #endif
 #endif
 
diff --git a/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
index f68e8dc5143ed32cf4cf7b310670ef32bd7bbece..27c7986daf9198b776398c4bd796e8020daa6cca 100644
--- a/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
+++ b/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
@@ -117,10 +117,13 @@
 #define BEEPER_PIN         PC3    // use PB7 to shut up if desired
 #define LED_PIN            PC13
 
+//
 // Touch support
-#define BTN_ENC            PA11   // Real pin is needed to enable encoder's push button functionality used by touch screen. PA11 gives stable value.
-
-#define TOUCH_CS           PA4
-//#define TOUCH_INTERRUPT    PC4    // Not yet implemented
+//
+#if ENABLED(TOUCH_BUTTONS)
+  #define BTN_ENC          PA11   // Real pin needed to enable encoder's push button functionality used by touch screen. PA11 gives stable value.
+  #define TOUCH_CS_PIN     PA4
+  #define TOUCH_INT_PIN    PC4
+#endif
 
 #define NO_PAUSE_AFTER_PRINT
diff --git a/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
index d23c1f1d3150a9036e799fe0d32b25633660d525..0a08e72204999ae3591872480146c9335660c556 100755
--- a/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
+++ b/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
@@ -53,6 +53,10 @@
 #define Z_MIN_PIN          PA11
 #define Z_MAX_PIN          PC4
 
+#ifndef FIL_RUNOUT_PIN
+  #define FIL_RUNOUT_PIN   PF11  // MT_DET
+#endif
+
 //
 // Steppers
 //
@@ -76,44 +80,54 @@
 // Temperature Sensors
 //
 #define TEMP_0_PIN         PC1   // TH1
-//#define TEMP_1_PIN         PC2   // TH2
 #define TEMP_BED_PIN       PC0   // TB1
 
 //
 // Heaters / Fans
 //
 #define HEATER_0_PIN       PC3   // HEATER1
-//#define HEATER_1_PIN       PA6   // HEATER2
 #define HEATER_BED_PIN     PA0   // HOT BED
 
 #define FAN_PIN            PB1   // FAN
 
-#define BTN_ENC            PB3   // Pin is not connected. Real pin is needed to enable encoder's push button functionality used by touch screen
-
+//
+// Thermocouples
+//
 //#define MAX6675_SS_PIN     PE5  // TC1 - CS1
 //#define MAX6675_SS_PIN     PE6  // TC2 - CS2
 
+//
+// Misc. Functions
+//
 #define POWER_LOSS_PIN     PA2   // PW_DET
 #define PS_ON_PIN          PA3   // PW_OFF
-#define FIL_RUNOUT_PIN     PF11  // MT_DET
 
-#define BEEPER_PIN         PC5
 //#define LED_PIN            PB2
 
+//
+// LCD / Controller
+//
+#define BEEPER_PIN         PC5
+#define SD_DETECT_PIN      PD12
+
 /**
  * Note: MKS Robin TFT screens use various TFT controllers.
  * If the screen stays white, disable 'LCD_RESET_PIN'
  * to let the bootloader init the screen.
  */
-#define LCD_RESET_PIN      PF6
-#define NO_LCD_REINIT             // Suppress LCD re-initialization
-
-#define LCD_BACKLIGHT_PIN  PD13
-#define FSMC_CS_PIN        PD7    // NE4
-#define FSMC_RS_PIN        PD11   // A0
-#define TOUCH_CS           PC2
-
-#define SD_DETECT_PIN      PD12
+#if ENABLED(MKS_ROBIN_TFT)
+  #define LCD_RESET_PIN    PF6
+  #define NO_LCD_REINIT           // Suppress LCD re-initialization
+
+  #define LCD_BACKLIGHT_PIN PD13
+
+  #if ENABLED(TOUCH_BUTTONS)
+    #define BTN_ENC        PB3    // Not connected. TODO: Replace this hack to enable button code
+    #define FSMC_CS_PIN    PD7    // NE4
+    #define FSMC_RS_PIN    PD11   // A0
+    #define TOUCH_CS_PIN   PC2
+  #endif
+#endif
 
 // Motor current PWM pins
 #define MOTOR_CURRENT_PWM_XY_PIN   PA6
diff --git a/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
index 3d0415cb1b0de0a7e68d7dbc0cdc3dbc99c25f97..40b0d99e01a74c44d7d3b979f46a9cd66fe38e4f 100755
--- a/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
+++ b/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
@@ -51,6 +51,10 @@
 #define Z_MIN_PIN         PA11
 #define Z_MAX_PIN         PC4
 
+#ifndef FIL_RUNOUT_PIN
+  #define FIL_RUNOUT_PIN   PA4   // MT_DET
+#endif
+
 //
 // Steppers
 //
@@ -90,29 +94,41 @@
 
 #define FAN_PIN            PB1   // FAN
 
-#define BTN_ENC            PC13  // Pin is not connected. Real pin is needed to enable encoder's push button functionality used by touch screen
-
+//
+// Thermocouples
+//
 //#define MAX6675_SS_PIN     PE5  // TC1 - CS1
 //#define MAX6675_SS_PIN     PE6  // TC2 - CS2
 
+//
+// Misc. Functions
+//
 #define POWER_LOSS_PIN     PA2   // PW_DET
 #define PS_ON_PIN          PA3   // PW_OFF
-#define FIL_RUNOUT_PIN     PA4   // MT_DET
 
-#define BEEPER_PIN         PC5
 #define LED_PIN            PB2
 
+//
+// LCD / Controller
+//
+#define BEEPER_PIN         PC5
+#define SD_DETECT_PIN      PD12
+
 /**
  * Note: MKS Robin TFT screens use various TFT controllers.
  * If the screen stays white, disable 'LCD_RESET_PIN'
  * to let the bootloader init the screen.
  */
-#define LCD_RESET_PIN      PF6
-#define NO_LCD_REINIT             // Suppress LCD re-initialization
-
-#define LCD_BACKLIGHT_PIN  PD13
-#define FSMC_CS_PIN        PD7   // NE4
-#define FSMC_RS_PIN        PD11  // A0
-#define TOUCH_CS           PA7
-
-#define SD_DETECT_PIN      PD12
+#if ENABLED(MKS_ROBIN_TFT)
+  #define LCD_RESET_PIN      PF6
+  #define NO_LCD_REINIT             // Suppress LCD re-initialization
+
+  #define LCD_BACKLIGHT_PIN  PD13
+
+  #if ENABLED(TOUCH_BUTTONS)
+    #define BTN_ENC          PC13   // Not connected. TODO: Replace this hack to enable button code
+    #define FSMC_CS_PIN      PD7    // NE4
+    #define FSMC_RS_PIN      PD11   // A0
+    #define TOUCH_CS_PIN     PA7
+  #endif
+#endif
diff --git a/Marlin/src/pins/stm32/pins_STM3R_MINI.h b/Marlin/src/pins/stm32/pins_STM3R_MINI.h
index 66568e2e9a36e1b960a274d9733465550942f035..5ababb36bf21e2d7469bfb1c4956d0402159f034 100644
--- a/Marlin/src/pins/stm32/pins_STM3R_MINI.h
+++ b/Marlin/src/pins/stm32/pins_STM3R_MINI.h
@@ -143,7 +143,15 @@
     #endif
   #endif
 
-  #if ENABLED(NEWPANEL)
+  #if ENABLED(TOUCH_BUTTONS)
+
+    #define TOUCH_CS_PIN   PB12   // SPI2_NSS
+    #define TOUCH_SCK_PIN  PB13
+    #define TOUCH_MOSI_PIN PB14
+    #define TOUCH_MISO_PIN PB15
+    #define TOUCH_INT_PIN  PC6   // (PenIRQ coming from ADS7843)
+
+  #elif ENABLED(NEWPANEL)
 
     #if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
 
diff --git a/config/default/Configuration.h b/config/default/Configuration.h
index bcecca1dca9ee87c958100192814f251843fb857..9a25b6ac9a1fec9b29b3b06dd2905eee2d5860fa 100644
--- a/config/default/Configuration.h
+++ b/config/default/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration.h b/config/examples/3DFabXYZ/Migbot/Configuration.h
index 2792e760cebd4f86adc92f11f43990e8296bf3fc..8da4a630f07757d375f55877441a520a731d647d 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration.h
@@ -2063,8 +2063,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AlephObjects/TAZ4/Configuration.h b/config/examples/AlephObjects/TAZ4/Configuration.h
index aa4f1e3e77e93ebd30707d79e6054163371bc890..04814d8f09b51416784bfde469fe9f42757bd01d 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration.h
@@ -2052,8 +2052,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AliExpress/CL-260/Configuration.h b/config/examples/AliExpress/CL-260/Configuration.h
index f7490b9f6a8d66d6e2dc70a445dc2385a14959fe..49640b0e5d19160216b571c8a4b2d39c564fda01 100644
--- a/config/examples/AliExpress/CL-260/Configuration.h
+++ b/config/examples/AliExpress/CL-260/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AliExpress/UM2pExt/Configuration.h b/config/examples/AliExpress/UM2pExt/Configuration.h
index ecff552b6aec1caffa9f4cf0e197d260daa88dc9..33f600b3b3a00851b3de5cbb39b9436ec4397197 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration.h
@@ -2043,8 +2043,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A2/Configuration.h b/config/examples/Anet/A2/Configuration.h
index c27d394a715fc33ca95a0a0919411ee8274ed635..a4fe30333de2d339322673ae18fae8e6c4818001 100644
--- a/config/examples/Anet/A2/Configuration.h
+++ b/config/examples/Anet/A2/Configuration.h
@@ -2034,8 +2034,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A2plus/Configuration.h b/config/examples/Anet/A2plus/Configuration.h
index c8047e9ac82c6f406d3016862a214f728227c827..87931a181e2e7f5b9fdfe8fd5d13d33cc50d3be0 100644
--- a/config/examples/Anet/A2plus/Configuration.h
+++ b/config/examples/Anet/A2plus/Configuration.h
@@ -2034,8 +2034,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A6/Configuration.h b/config/examples/Anet/A6/Configuration.h
index e45372310ab326bba01e9ac78f541cb4306c079d..46cda6b4e8e9cec05bf07e562d0b99c600cd4b2a 100644
--- a/config/examples/Anet/A6/Configuration.h
+++ b/config/examples/Anet/A6/Configuration.h
@@ -2185,8 +2185,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A8/Configuration.h b/config/examples/Anet/A8/Configuration.h
index 065f27e265aa1ca34c86454e7734ff3df76dfe69..10cae8b04105beefce783506f409f4d238409620 100644
--- a/config/examples/Anet/A8/Configuration.h
+++ b/config/examples/Anet/A8/Configuration.h
@@ -2047,8 +2047,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A8plus/Configuration.h b/config/examples/Anet/A8plus/Configuration.h
index 07ee5ae790a85c70fe3d351987b0267541176d65..36ebccfa6cdba3b6d8b2e1c94d5c79380f1c26fc 100644
--- a/config/examples/Anet/A8plus/Configuration.h
+++ b/config/examples/Anet/A8plus/Configuration.h
@@ -2043,8 +2043,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/E16/Configuration.h b/config/examples/Anet/E16/Configuration.h
index b28b22e18125fa9eb30ca7a1edc026f5d48a5339..2a65cd45c7bd1d1e997410c75d3f3b3679a446e8 100644
--- a/config/examples/Anet/E16/Configuration.h
+++ b/config/examples/Anet/E16/Configuration.h
@@ -2044,8 +2044,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AnyCubic/i3/Configuration.h b/config/examples/AnyCubic/i3/Configuration.h
index dfeefa30202f3b320c160d1075ed7d78be6a8b6e..c99f8d3823bd0dd94054b42d86a9347fb15beca6 100644
--- a/config/examples/AnyCubic/i3/Configuration.h
+++ b/config/examples/AnyCubic/i3/Configuration.h
@@ -2042,8 +2042,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/ArmEd/Configuration.h b/config/examples/ArmEd/Configuration.h
index 58d8a244638095eb0a3b31007bed483f941132cb..a4053fff194619fa2521d53b9c6be34f69c329cc 100644
--- a/config/examples/ArmEd/Configuration.h
+++ b/config/examples/ArmEd/Configuration.h
@@ -2033,8 +2033,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Azteeg/X5GT/Configuration.h b/config/examples/Azteeg/X5GT/Configuration.h
index 7081675874b8192998dff34bef7c71200033220c..4b6524cc175a649ee872a646e151d4d4709d8454 100644
--- a/config/examples/Azteeg/X5GT/Configuration.h
+++ b/config/examples/Azteeg/X5GT/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration.h b/config/examples/BIBO/TouchX/cyclops/Configuration.h
index d18d546eb68176aeb429b206122daa6f7a299401..d4202433aa9c1537d8fef032b93408e9d66e8a39 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BIBO/TouchX/default/Configuration.h b/config/examples/BIBO/TouchX/default/Configuration.h
index 9ae7ac0cf799a928a3fa1477b53820e01ed84760..68833cce7cf5c8623e8097a505a17637326ebca3 100644
--- a/config/examples/BIBO/TouchX/default/Configuration.h
+++ b/config/examples/BIBO/TouchX/default/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BQ/Hephestos/Configuration.h b/config/examples/BQ/Hephestos/Configuration.h
index 63e24434ce6a9298eeeba2db6fd8fe1c1f7ea91d..5abc10aa29bb3a3724f54fa5b0a8a798baccfc10 100644
--- a/config/examples/BQ/Hephestos/Configuration.h
+++ b/config/examples/BQ/Hephestos/Configuration.h
@@ -2020,8 +2020,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BQ/Hephestos_2/Configuration.h b/config/examples/BQ/Hephestos_2/Configuration.h
index f2cf70294b811daf92e31a5c5995cb592caf9732..17000ea3296988fe56f2428c63b9b4ac931f73e0 100644
--- a/config/examples/BQ/Hephestos_2/Configuration.h
+++ b/config/examples/BQ/Hephestos_2/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BQ/WITBOX/Configuration.h b/config/examples/BQ/WITBOX/Configuration.h
index 8f1d81e0c8ee837cba4fb0669674483b50933318..0071948d72c3c019f388c6b9b095b7393c73eda4 100644
--- a/config/examples/BQ/WITBOX/Configuration.h
+++ b/config/examples/BQ/WITBOX/Configuration.h
@@ -2020,8 +2020,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Cartesio/Configuration.h b/config/examples/Cartesio/Configuration.h
index 86875b5bae696cf3cfeaac2f74340fadbd3d6084..53aea38d0f943aa8e936e05843b83e8e6ddc0f8a 100644
--- a/config/examples/Cartesio/Configuration.h
+++ b/config/examples/Cartesio/Configuration.h
@@ -2031,8 +2031,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10/Configuration.h b/config/examples/Creality/CR-10/Configuration.h
index d6a4e4d02c6e8dd2363a50ca82b76ee6aa6f44ab..3fac24fb42c6775d4e82aef6707032cb5c7d9980 100644
--- a/config/examples/Creality/CR-10/Configuration.h
+++ b/config/examples/Creality/CR-10/Configuration.h
@@ -2042,8 +2042,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10S/Configuration.h b/config/examples/Creality/CR-10S/Configuration.h
index edbf8f826c053f73268a9ba2039fdcf580761a3f..6f99beafbb82fb8a4af07b7549740a05a6ff8047 100644
--- a/config/examples/Creality/CR-10S/Configuration.h
+++ b/config/examples/Creality/CR-10S/Configuration.h
@@ -2033,8 +2033,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10_5S/Configuration.h b/config/examples/Creality/CR-10_5S/Configuration.h
index eff6b12f17ce58a36574a25ab3fdc5d7c61a8685..8ddfeb50d9509dcc70d545511087c521b4f8b035 100644
--- a/config/examples/Creality/CR-10_5S/Configuration.h
+++ b/config/examples/Creality/CR-10_5S/Configuration.h
@@ -2035,8 +2035,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10mini/Configuration.h b/config/examples/Creality/CR-10mini/Configuration.h
index 0a56067e3147e9eff43babdb31e7575be01311e3..e2e363131402047b5b14d94148d6524c6806540d 100644
--- a/config/examples/Creality/CR-10mini/Configuration.h
+++ b/config/examples/Creality/CR-10mini/Configuration.h
@@ -2051,8 +2051,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-20 Pro/Configuration.h b/config/examples/Creality/CR-20 Pro/Configuration.h
index be6d35ee3c86dc82cf12be0d2f54cc31b0c99c8d..2b13c1c0b583d9b4688669bc85e5031eb2232abe 100644
--- a/config/examples/Creality/CR-20 Pro/Configuration.h	
+++ b/config/examples/Creality/CR-20 Pro/Configuration.h	
@@ -2029,8 +2029,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-20/Configuration.h b/config/examples/Creality/CR-20/Configuration.h
index f5e7b7c4fd55796e1b220da6777dc7ad013a6909..fc5785ee0381f25935a3163061f669eaef2b9201 100644
--- a/config/examples/Creality/CR-20/Configuration.h
+++ b/config/examples/Creality/CR-20/Configuration.h
@@ -2029,8 +2029,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-8/Configuration.h b/config/examples/Creality/CR-8/Configuration.h
index d323a9b2f50f8d798a2666ff648e0685b4ea83ba..425b15c6d23fdcdf62dcb0451125f1a76180e5ed 100644
--- a/config/examples/Creality/CR-8/Configuration.h
+++ b/config/examples/Creality/CR-8/Configuration.h
@@ -2042,8 +2042,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-2/Configuration.h b/config/examples/Creality/Ender-2/Configuration.h
index 9c211dbe945b8292de183a28cd190bc703532514..db181c1353bd938a8c41c51a6f9d03f73903b94f 100644
--- a/config/examples/Creality/Ender-2/Configuration.h
+++ b/config/examples/Creality/Ender-2/Configuration.h
@@ -2036,8 +2036,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-3/Configuration.h b/config/examples/Creality/Ender-3/Configuration.h
index 4cf8a07862676298be6f597a14bb45063a6e5e48..89fd4f10a0d55b83fd3619ba294b414f72c4a808 100644
--- a/config/examples/Creality/Ender-3/Configuration.h
+++ b/config/examples/Creality/Ender-3/Configuration.h
@@ -2036,8 +2036,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-4/Configuration.h b/config/examples/Creality/Ender-4/Configuration.h
index 39856a898b59aa1df854b148a976bec99e8e3281..bf379ed9edf5b02f5d9d682d803c3f19bb3b9a84 100644
--- a/config/examples/Creality/Ender-4/Configuration.h
+++ b/config/examples/Creality/Ender-4/Configuration.h
@@ -2042,8 +2042,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-5/Configuration.h b/config/examples/Creality/Ender-5/Configuration.h
index 23db86738b9673513880861832c5579323d7df48..ac278a4649429fe2849594e46b58827fd5030674 100644
--- a/config/examples/Creality/Ender-5/Configuration.h
+++ b/config/examples/Creality/Ender-5/Configuration.h
@@ -2029,8 +2029,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Dagoma/Disco Ultimate/Configuration.h b/config/examples/Dagoma/Disco Ultimate/Configuration.h
index 25891fff32ac734eaf29071c5897d9577322a132..e87ea16842a2f0be530e1a4624f332aecef16840 100644
--- a/config/examples/Dagoma/Disco Ultimate/Configuration.h	
+++ b/config/examples/Dagoma/Disco Ultimate/Configuration.h	
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h b/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
index 244ead39427523a69d6031d9add45f65ab5dcd93..8de028a9d0cc915452bb1c9eb9f3cf1aff99b7dd 100755
--- a/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h	
+++ b/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h	
@@ -2037,8 +2037,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Einstart-S/Configuration.h b/config/examples/Einstart-S/Configuration.h
index f5e13f11cfc5a9512287a3b448e0c614da5af6e7..a48f399adf1ab8fae3dd669dda27ad9717c14b19 100644
--- a/config/examples/Einstart-S/Configuration.h
+++ b/config/examples/Einstart-S/Configuration.h
@@ -2042,8 +2042,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Felix/Configuration.h b/config/examples/Felix/Configuration.h
index 6518bda9d7f57dd6d559e00e774e0a3c8975d174..f052a755fcaf7836368fad6dfedab02f7b32b1bf 100644
--- a/config/examples/Felix/Configuration.h
+++ b/config/examples/Felix/Configuration.h
@@ -2014,8 +2014,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Felix/DUAL/Configuration.h b/config/examples/Felix/DUAL/Configuration.h
index 7c4831468aed1b570d493fb2879f9f2f84c5a902..68f5ca58bade0fb3084b7df2c4c05c7411b2ea43 100644
--- a/config/examples/Felix/DUAL/Configuration.h
+++ b/config/examples/Felix/DUAL/Configuration.h
@@ -2014,8 +2014,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/FlashForge/CreatorPro/Configuration.h b/config/examples/FlashForge/CreatorPro/Configuration.h
index ddd643667b577b8aed77dbf696311f9045925b0b..b5f074aeb44ce7f37463526881a6e5849ed29411 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration.h
@@ -2023,8 +2023,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/FolgerTech/i3-2020/Configuration.h b/config/examples/FolgerTech/i3-2020/Configuration.h
index 67eef9c93c3aaf56ed8338f5736a129cdef3007d..82f63b1add08977ff166bdab0524e2e4be497fc8 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration.h
@@ -2038,8 +2038,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Formbot/Raptor/Configuration.h b/config/examples/Formbot/Raptor/Configuration.h
index a9829a8244739ab2ef1b08eaf071af1302e7c71a..6be6c9061378d6c78f4c2ebe07899b94adb9889b 100644
--- a/config/examples/Formbot/Raptor/Configuration.h
+++ b/config/examples/Formbot/Raptor/Configuration.h
@@ -2137,8 +2137,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration.h b/config/examples/Formbot/T_Rex_2+/Configuration.h
index e5529b17f7f4a6a4ddf9beb41c9dca977a13babe..33e68d80c843e39067bb8821629e61578c703ba5 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration.h
@@ -2066,8 +2066,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Formbot/T_Rex_3/Configuration.h b/config/examples/Formbot/T_Rex_3/Configuration.h
index fe6c03b79114822e1f1475cb68cf59504d1242de..5662f6abcd75d82fe440511375986d5c3afc091f 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration.h
@@ -2060,8 +2060,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Fysetc/AIO_II/Configuration.h b/config/examples/Fysetc/AIO_II/Configuration.h
index 402d5c7f955d402a4f2e146ee7a16ca9ac7622d8..a3fb788569d3a117eac319d676ed1181f4db48d4 100644
--- a/config/examples/Fysetc/AIO_II/Configuration.h
+++ b/config/examples/Fysetc/AIO_II/Configuration.h
@@ -2026,8 +2026,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Fysetc/CHEETAH/Configuration.h b/config/examples/Fysetc/CHEETAH/Configuration.h
index e2a907447bd49e73bbe326e8b14a57a5af74c326..87a04dd9a9c173a608134e5f91c62ba8aca20a55 100644
--- a/config/examples/Fysetc/CHEETAH/Configuration.h
+++ b/config/examples/Fysetc/CHEETAH/Configuration.h
@@ -2026,8 +2026,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Fysetc/F6_13/Configuration.h b/config/examples/Fysetc/F6_13/Configuration.h
index 4c90aaa7fdd410760366f90af94adaa762a70555..125f2821a59e5f77db8414366b5c0a6869439dbd 100644
--- a/config/examples/Fysetc/F6_13/Configuration.h
+++ b/config/examples/Fysetc/F6_13/Configuration.h
@@ -2028,8 +2028,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/A10/Configuration.h b/config/examples/Geeetech/A10/Configuration.h
index 4a95c318a6134a905ea6abee7a2272087c16ff97..f11d83a79fad8839cf0238e400186d142dd40e9d 100644
--- a/config/examples/Geeetech/A10/Configuration.h
+++ b/config/examples/Geeetech/A10/Configuration.h
@@ -2017,8 +2017,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/A10M/Configuration.h b/config/examples/Geeetech/A10M/Configuration.h
index 27bce2d79b4162580862d174fb9f34dc35a1030c..b2e9f1abb324019aabb29c1d07e765388f529c59 100644
--- a/config/examples/Geeetech/A10M/Configuration.h
+++ b/config/examples/Geeetech/A10M/Configuration.h
@@ -2017,8 +2017,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/A20M/Configuration.h b/config/examples/Geeetech/A20M/Configuration.h
index dd619d427425c278880efa7e677cc565638e5615..9d4d839fd311b001d0096bf3468938dc90e78a29 100644
--- a/config/examples/Geeetech/A20M/Configuration.h
+++ b/config/examples/Geeetech/A20M/Configuration.h
@@ -2019,8 +2019,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/GT2560/Configuration.h b/config/examples/Geeetech/GT2560/Configuration.h
index 654d734626e96eb3fe955c691a8fdefaab7749ee..fb73eb7c35092fa7f91197c01be389a918666419 100644
--- a/config/examples/Geeetech/GT2560/Configuration.h
+++ b/config/examples/Geeetech/GT2560/Configuration.h
@@ -2047,8 +2047,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
index a3988d348ed6ca2ec3b53eddd0fc5f789d678857..a02efd75fd6dae7aed32e16d6ee36a219fde568a 100644
--- a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
+++ b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/MeCreator2/Configuration.h b/config/examples/Geeetech/MeCreator2/Configuration.h
index 193c93ec288786be6b50062ebbbf069ddc452e8e..41219547332a22728357a66653cb5624a020060e 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration.h
@@ -2039,8 +2039,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
index 7148acd47d6dd6ce224eb35d3cbf8e7bc47732be..4ee990890e8d2f92696963a3d62a8fa04fcf1804 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h	
+++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h	
@@ -2053,8 +2053,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
index 865caf7a8eea664cf0898a35bb8467213166df99..35e45e5d33925a2d9fa6cdfef87c15eaefb2b67c 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h	
+++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h	
@@ -2052,8 +2052,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
index 7b2184ad2d40466a48d70f5d60d2601ed7cb7b5b..985a21b4833d1f6a56e2fbc87706fd3cef7253f4 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h	
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h	
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
index 36b88e644b2296a28fe1e78b996120c4522ceeb8..7b75702dd1ce9e61efa8164337f1c58f80da003a 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h	
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h	
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Infitary/i3-M508/Configuration.h b/config/examples/Infitary/i3-M508/Configuration.h
index a6ec0994c7da413ecc54e179af76e075ceb154d6..3563a32d7e9f0cb794b3c20be3b0b7a63ff0ef0d 100644
--- a/config/examples/Infitary/i3-M508/Configuration.h
+++ b/config/examples/Infitary/i3-M508/Configuration.h
@@ -2036,8 +2036,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/JGAurora/A1/Configuration.h b/config/examples/JGAurora/A1/Configuration.h
index 127671feb4a0550326b6c640764a7c0cc12502b5..ef3d0edfbd6b9b8d37afaca11c4c5c2ed8b2a731 100644
--- a/config/examples/JGAurora/A1/Configuration.h
+++ b/config/examples/JGAurora/A1/Configuration.h
@@ -2029,8 +2029,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/JGAurora/A5/Configuration.h b/config/examples/JGAurora/A5/Configuration.h
index d4d70ebbc80a7783861593b98d65acd6c9916d87..52058a3118967b4be19dbad8a931d0bffb5f0855 100644
--- a/config/examples/JGAurora/A5/Configuration.h
+++ b/config/examples/JGAurora/A5/Configuration.h
@@ -2044,8 +2044,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/JGAurora/A5S/Configuration.h b/config/examples/JGAurora/A5S/Configuration.h
index b086d72bb751b617e1440eb114f9a6480ac79559..6fa815cf5e51ec35fe5de4a1b5f8082c63920fa7 100644
--- a/config/examples/JGAurora/A5S/Configuration.h
+++ b/config/examples/JGAurora/A5S/Configuration.h
@@ -2030,8 +2030,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/MakerParts/Configuration.h b/config/examples/MakerParts/Configuration.h
index a37aff9a5014919c125586a9523dcc62d56ab337..d894196f8a2f03d19e50febd347975cce602d373 100644
--- a/config/examples/MakerParts/Configuration.h
+++ b/config/examples/MakerParts/Configuration.h
@@ -2052,8 +2052,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Malyan/M150/Configuration.h b/config/examples/Malyan/M150/Configuration.h
index 8aa6f8cc60d899c1455a8eab3e821c144c642923..8099a04eac466d3be3d2c2bcb0e1ab641c77be3a 100644
--- a/config/examples/Malyan/M150/Configuration.h
+++ b/config/examples/Malyan/M150/Configuration.h
@@ -2060,8 +2060,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Malyan/M200/Configuration.h b/config/examples/Malyan/M200/Configuration.h
index 7fc5851800fcbd8ab23e8d032eb1b4d986299510..8f27ac386ecb26c4d2e6265673bd627814701b53 100644
--- a/config/examples/Malyan/M200/Configuration.h
+++ b/config/examples/Malyan/M200/Configuration.h
@@ -2040,8 +2040,16 @@
 #define MALYAN_LCD
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Micromake/C1/basic/Configuration.h b/config/examples/Micromake/C1/basic/Configuration.h
index b61fb46c36473063df8bcecde147a4caaa562e52..673e421100c0786d33d5ac20f548a238be908a63 100644
--- a/config/examples/Micromake/C1/basic/Configuration.h
+++ b/config/examples/Micromake/C1/basic/Configuration.h
@@ -2036,8 +2036,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Micromake/C1/enhanced/Configuration.h b/config/examples/Micromake/C1/enhanced/Configuration.h
index 2cbfe8fcc6e254e82c3583c3b4db79ffaeb13793..226b19c60594a8066d5d69f6000de7c7cab1390f 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration.h
@@ -2036,8 +2036,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Mks/Robin/Configuration.h b/config/examples/Mks/Robin/Configuration.h
index 958535d4f152f6bdf81aca22ba165f61605e3107..8beb1267d5d82f046979ae317baa48f943f0054b 100644
--- a/config/examples/Mks/Robin/Configuration.h
+++ b/config/examples/Mks/Robin/Configuration.h
@@ -2034,8 +2034,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Mks/Sbase/Configuration.h b/config/examples/Mks/Sbase/Configuration.h
index 55b11f0206acf524ed21b3fc615979400146b7ed..4546f9eb7fbf40446df0b402486de9a7fcbc3b51 100644
--- a/config/examples/Mks/Sbase/Configuration.h
+++ b/config/examples/Mks/Sbase/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Printrbot/PrintrboardG2/Configuration.h b/config/examples/Printrbot/PrintrboardG2/Configuration.h
index 1639f710683318ee806d5b009ae4366a5c867c50..9b288a17791580992b7cbe6b53cc3a2e496e6dc7 100644
--- a/config/examples/Printrbot/PrintrboardG2/Configuration.h
+++ b/config/examples/Printrbot/PrintrboardG2/Configuration.h
@@ -2040,8 +2040,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RapideLite/RL200/Configuration.h b/config/examples/RapideLite/RL200/Configuration.h
index 8dd46c6abe68ddddf0e2ecb7fea737068cd73f08..77ccabccc8196a7f93294f76f394a09ab48d9629 100644
--- a/config/examples/RapideLite/RL200/Configuration.h
+++ b/config/examples/RapideLite/RL200/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RepRapPro/Huxley/Configuration.h b/config/examples/RepRapPro/Huxley/Configuration.h
index 642a820fcf38e571fda8bc1eb14edae3379213a7..c0e926dfadd724d1334a9a6cfd625ab232231296 100644
--- a/config/examples/RepRapPro/Huxley/Configuration.h
+++ b/config/examples/RepRapPro/Huxley/Configuration.h
@@ -2081,8 +2081,16 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RepRapWorld/Megatronics/Configuration.h b/config/examples/RepRapWorld/Megatronics/Configuration.h
index 894ed01ad5d8d44b915c104706f6426a71637150..9ec0adb6bb8aae9f9156bf79b4f3643bb8cdb2e8 100644
--- a/config/examples/RepRapWorld/Megatronics/Configuration.h
+++ b/config/examples/RepRapWorld/Megatronics/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RigidBot/Configuration.h b/config/examples/RigidBot/Configuration.h
index aeec7a0b7e411a3e5b4b813790c4f925f4d99c12..2b8bb8d8edfe626201520176798b3907142c5622 100644
--- a/config/examples/RigidBot/Configuration.h
+++ b/config/examples/RigidBot/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/SCARA/Configuration.h b/config/examples/SCARA/Configuration.h
index faf11620f42c37e5b6a76b934abbde11fe0e8db0..81ae7966d22cef4cf1a891a06c413addb3885eec 100644
--- a/config/examples/SCARA/Configuration.h
+++ b/config/examples/SCARA/Configuration.h
@@ -2041,8 +2041,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/Black_STM32F407VET6/Configuration.h b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
index 25aa7ca9459d1cdcfba506e0712af30f1849c8c1..8687711a6690c6fc9047def93757cf6e0471e6f4 100644
--- a/config/examples/STM32/Black_STM32F407VET6/Configuration.h
+++ b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/STM32F10/Configuration.h b/config/examples/STM32/STM32F10/Configuration.h
index 4a010c099e042b2d52ed5a57e2a4e8b647ab45c5..bf04ae150822b7f7960319dbc2eea49fa52c6556 100644
--- a/config/examples/STM32/STM32F10/Configuration.h
+++ b/config/examples/STM32/STM32F10/Configuration.h
@@ -2034,8 +2034,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/STM32F4/Configuration.h b/config/examples/STM32/STM32F4/Configuration.h
index f03379f56d2f31dc0715a4dd5f2526d6dfa342ca..1030c5de0c6c3d66f8c03b882c9217d062f34d9b 100644
--- a/config/examples/STM32/STM32F4/Configuration.h
+++ b/config/examples/STM32/STM32F4/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/stm32f103ret6/Configuration.h b/config/examples/STM32/stm32f103ret6/Configuration.h
index b027e887ed90d991253f167b5d750240b915ecaa..1c8fab86995d9a831cc6c51a2de3355df255bd04 100644
--- a/config/examples/STM32/stm32f103ret6/Configuration.h
+++ b/config/examples/STM32/stm32f103ret6/Configuration.h
@@ -2034,8 +2034,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Sanguinololu/Configuration.h b/config/examples/Sanguinololu/Configuration.h
index df1b39c999446383853f974da71adb06054ac0aa..7bc24ddfb70bfbc474d970395a78617dd95ac7dd 100644
--- a/config/examples/Sanguinololu/Configuration.h
+++ b/config/examples/Sanguinololu/Configuration.h
@@ -2063,8 +2063,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tevo/Tarantula Pro/Configuration.h b/config/examples/Tevo/Tarantula Pro/Configuration.h
index d6ebcda8d7443cfdd0baaf88c9820318cbbd2418..9fe6d69d850bee4f212c600af8f3d06c0ad4de0e 100644
--- a/config/examples/Tevo/Tarantula Pro/Configuration.h	
+++ b/config/examples/Tevo/Tarantula Pro/Configuration.h	
@@ -2024,8 +2024,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/TheBorg/Configuration.h b/config/examples/TheBorg/Configuration.h
index 4f4c56774b7f35cac1ed4165a5aeea52588805e3..8b67005467aa3797d2e9976a3c07e22f070978fa 100644
--- a/config/examples/TheBorg/Configuration.h
+++ b/config/examples/TheBorg/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/TinyBoy2/Configuration.h b/config/examples/TinyBoy2/Configuration.h
index f778ea974228f439b2dc5f8ed9eb48f70b34f5f5..4577e215928a627551f5c7153dc48acff152aecb 100644
--- a/config/examples/TinyBoy2/Configuration.h
+++ b/config/examples/TinyBoy2/Configuration.h
@@ -2088,8 +2088,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X1/Configuration.h b/config/examples/Tronxy/X1/Configuration.h
index 5ba2648e53c78c74cb01d1643e4c18ec13ab69a5..7587d0196a7a795e3b76c2fd4cd19cc0927e543d 100644
--- a/config/examples/Tronxy/X1/Configuration.h
+++ b/config/examples/Tronxy/X1/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X3A/Configuration.h b/config/examples/Tronxy/X3A/Configuration.h
index a1348957f27b6a6ee96836ce143f1e886e99b712..f84631305ccd8c1a07d5f699b8182fc0c8fa9aa2 100644
--- a/config/examples/Tronxy/X3A/Configuration.h
+++ b/config/examples/Tronxy/X3A/Configuration.h
@@ -2036,8 +2036,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X5S-2E/Configuration.h b/config/examples/Tronxy/X5S-2E/Configuration.h
index faab4c028c5f08f57b23dfb769d24f19eae4c134..082c1b8947baf89be10634c069c042ac19637145 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration.h
@@ -2053,8 +2053,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X5S/Configuration.h b/config/examples/Tronxy/X5S/Configuration.h
index 0f4c580867488d9db884061cd7f8f28c5f0cd1fd..8db73b707bad6ea0f21cf690ead5416bb4605cc7 100644
--- a/config/examples/Tronxy/X5S/Configuration.h
+++ b/config/examples/Tronxy/X5S/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/XY100/Configuration.h b/config/examples/Tronxy/XY100/Configuration.h
index f38990ec564edaa91dfa7edfe5f53bf4e544a850..8f239d9204efff79d2b851d7302e014d30f6842c 100644
--- a/config/examples/Tronxy/XY100/Configuration.h
+++ b/config/examples/Tronxy/XY100/Configuration.h
@@ -2043,8 +2043,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/UltiMachine/Archim1/Configuration.h b/config/examples/UltiMachine/Archim1/Configuration.h
index d836a170d050051559e8a45a702a12d81889b7a6..17977366507f6863e8e37ec43d82feb62d724ccf 100644
--- a/config/examples/UltiMachine/Archim1/Configuration.h
+++ b/config/examples/UltiMachine/Archim1/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/UltiMachine/Archim2/Configuration.h b/config/examples/UltiMachine/Archim2/Configuration.h
index 8071a35e22c23b8eabed868a279305aec48469da..8460f0d53de85ce3ec66945863a102b061eca6cf 100644
--- a/config/examples/UltiMachine/Archim2/Configuration.h
+++ b/config/examples/UltiMachine/Archim2/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/VORONDesign/Configuration.h b/config/examples/VORONDesign/Configuration.h
index c718d985edb91ae5d2992f2b6eae58e849439ed1..83b0d7928c7c4dc7acc5aabb08a636c34a26fd06 100644
--- a/config/examples/VORONDesign/Configuration.h
+++ b/config/examples/VORONDesign/Configuration.h
@@ -2041,8 +2041,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Velleman/K8200/Configuration.h b/config/examples/Velleman/K8200/Configuration.h
index 440306ab2847b351d8d6c44e9101cc63f8243892..99d28567b143efddf299086f1ba43479c39a9900 100644
--- a/config/examples/Velleman/K8200/Configuration.h
+++ b/config/examples/Velleman/K8200/Configuration.h
@@ -2030,8 +2030,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Velleman/K8400/Configuration.h b/config/examples/Velleman/K8400/Configuration.h
index edf8cf508bb115131d6f5f75d37aceb1ea4fccc1..9ceca3c911df25ac6cc5e0ed593bc1370efc08b3 100644
--- a/config/examples/Velleman/K8400/Configuration.h
+++ b/config/examples/Velleman/K8400/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Velleman/K8400/Dual-head/Configuration.h b/config/examples/Velleman/K8400/Dual-head/Configuration.h
index 584a48111dc0c14bc4add2a913236cdb9c0aeadb..9bc4e63978bd83889e623c48158c9ef2ebf53646 100644
--- a/config/examples/Velleman/K8400/Dual-head/Configuration.h
+++ b/config/examples/Velleman/K8400/Dual-head/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/WASP/PowerWASP/Configuration.h b/config/examples/WASP/PowerWASP/Configuration.h
index b70d4e95bba1453224e4584e5e4432d7083b87c6..7b9d8c64e82b59f9334e25f1ea397f5f3a51c282 100644
--- a/config/examples/WASP/PowerWASP/Configuration.h
+++ b/config/examples/WASP/PowerWASP/Configuration.h
@@ -2051,8 +2051,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration.h b/config/examples/Wanhao/Duplicator 6/Configuration.h
index 9f69e747fd9fe2c8848540ae72662c49defd2e2d..72b8b30ff8e8f47d3a157e9727df607002e46eee 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration.h	
+++ b/config/examples/Wanhao/Duplicator 6/Configuration.h	
@@ -2045,8 +2045,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h b/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h
index 5dcb4b1465f132e29fbf64b1f87fc8c38423d5fa..e5322c1bc5c7056fd4b68c1ba5655352ae01ae5a 100755
--- a/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h	
+++ b/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h	
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/adafruit/ST7565/Configuration.h b/config/examples/adafruit/ST7565/Configuration.h
index a91e0d7ed5361e0460c7ee1dd81f3aa93931d3a6..3d79fefb12f052b7d9d44c0a77b3a91da0dc7beb 100644
--- a/config/examples/adafruit/ST7565/Configuration.h
+++ b/config/examples/adafruit/ST7565/Configuration.h
@@ -2032,8 +2032,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration.h b/config/examples/delta/Anycubic/Kossel/Configuration.h
index a5bddc91b11c107c27aa53820ad25b4f2ef2791d..dbd75691d8e1257ca381d6a3d731411707ad30c0 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration.h
@@ -2220,8 +2220,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
index 699e5702921de455db776bae60080502f2349bc3..e588e5fb90c88befc8b0347771afe35a9dd4e8bd 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
@@ -2160,8 +2160,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/FLSUN/kossel/Configuration.h b/config/examples/delta/FLSUN/kossel/Configuration.h
index fddf025086f1a4f5628d87349ba712a2aca1bf6c..09e2077d407f1977ace89d4a0e0f56ea2b6b6be2 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration.h
@@ -2159,8 +2159,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration.h b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
index 633b25f94fc322e08f55fd520fef4a67516ce06c..486e2d63b7f95d6407b063af3d61a5086f97a155 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
@@ -2159,8 +2159,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration.h b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
index 6338bee2039317ac438faff157bbaea54a770ab0..6ad6bc0b009fb9d2f59e75709706cfbb65944255 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration.h	
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration.h	
@@ -2148,8 +2148,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Hatchbox_Alpha/Configuration.h b/config/examples/delta/Hatchbox_Alpha/Configuration.h
index 16362ed0aff10bc55afde143488f028812e92782..14c81a86823b7e0fd3333c51ea9c5809ed557920 100644
--- a/config/examples/delta/Hatchbox_Alpha/Configuration.h
+++ b/config/examples/delta/Hatchbox_Alpha/Configuration.h
@@ -2162,8 +2162,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/MKS/SBASE/Configuration.h b/config/examples/delta/MKS/SBASE/Configuration.h
index 1332d2639c575c8a9fc0740e5911965ffb7f838a..9fb409414faf51eda3a74dd9a31c7fbcd624ca0d 100644
--- a/config/examples/delta/MKS/SBASE/Configuration.h
+++ b/config/examples/delta/MKS/SBASE/Configuration.h
@@ -2147,8 +2147,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Tevo Little Monster/Configuration.h b/config/examples/delta/Tevo Little Monster/Configuration.h
index 0ab7872aa8f68baad7f6aefd192854dedaed2b7b..ce4ba3af105266cec97090dc189c550f13641470 100644
--- a/config/examples/delta/Tevo Little Monster/Configuration.h	
+++ b/config/examples/delta/Tevo Little Monster/Configuration.h	
@@ -2151,8 +2151,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/generic/Configuration.h b/config/examples/delta/generic/Configuration.h
index af30e012cc205d7b4f4076702cc21e6dc65136d4..17a51d4971e5aaa3f18f29a39bda26d95c5993dc 100644
--- a/config/examples/delta/generic/Configuration.h
+++ b/config/examples/delta/generic/Configuration.h
@@ -2147,8 +2147,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/kossel_mini/Configuration.h b/config/examples/delta/kossel_mini/Configuration.h
index f1285212db78bc9996bee9c7b227c0b6ddedc473..e5e50028de6253add05280a1cdc430dd032770af 100644
--- a/config/examples/delta/kossel_mini/Configuration.h
+++ b/config/examples/delta/kossel_mini/Configuration.h
@@ -2149,8 +2149,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/kossel_pro/Configuration.h b/config/examples/delta/kossel_pro/Configuration.h
index 202f1448778c417439d86300c3f54c9598ef4518..7c3e556c5eb6d6a23112d07b7112f2b3f56c3c14 100644
--- a/config/examples/delta/kossel_pro/Configuration.h
+++ b/config/examples/delta/kossel_pro/Configuration.h
@@ -2150,8 +2150,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/kossel_xl/Configuration.h b/config/examples/delta/kossel_xl/Configuration.h
index 17881769979f78e5a69d7cdbeca79c2735a58e89..802d633d655951bb36a13b773ce2edd1d000924a 100644
--- a/config/examples/delta/kossel_xl/Configuration.h
+++ b/config/examples/delta/kossel_xl/Configuration.h
@@ -2150,8 +2150,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/gCreate/gMax1.5+/Configuration.h b/config/examples/gCreate/gMax1.5+/Configuration.h
index dd87d1c7ac6d983b9af140bdcc58632396143744..75fde8dca59a58d2857d4386d98c72348ca168f2 100644
--- a/config/examples/gCreate/gMax1.5+/Configuration.h
+++ b/config/examples/gCreate/gMax1.5+/Configuration.h
@@ -2046,8 +2046,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/makibox/Configuration.h b/config/examples/makibox/Configuration.h
index ab93548f4ce8722811940cd52c09f040abf77fc5..fb09aabdd82b2135ad122cb3d97017eb51591ba4 100644
--- a/config/examples/makibox/Configuration.h
+++ b/config/examples/makibox/Configuration.h
@@ -2035,8 +2035,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/tvrrug/Round2/Configuration.h b/config/examples/tvrrug/Round2/Configuration.h
index dbc75f91110ce5111264c866faa00f2da6b6ee98..bc82843b1c6347b76a0e6f079b02ddfc8785d47d 100644
--- a/config/examples/tvrrug/Round2/Configuration.h
+++ b/config/examples/tvrrug/Round2/Configuration.h
@@ -2027,8 +2027,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/wt150/Configuration.h b/config/examples/wt150/Configuration.h
index ca29af8ff6b2ab99ae82a1527f4831322daf7542..38ab2e4d8d30ebe6c8fa1042848dc801fdd543dd 100644
--- a/config/examples/wt150/Configuration.h
+++ b/config/examples/wt150/Configuration.h
@@ -2037,8 +2037,16 @@
 //=============================================================================
 
 //
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+  #define XPT2046_X_CALIBRATION   12316
+  #define XPT2046_Y_CALIBRATION  -8981
+  #define XPT2046_X_OFFSET       -43
+  #define XPT2046_Y_OFFSET        257
+#endif
 
 //
 // RepRapWorld REPRAPWORLD_KEYPAD v1.1