Keyboard and TFT_Touch problem

Hello everyone, I am developing a project with an ESP32-2432S028R / ILI9341 and I use the TFT_Touch library to manage the touchpad.
My problem is that when I press a key the keyboard gives me another one. For example, I type “f” and it paints “a” and so on for those in the same row. Can you help me fix this?
For me to detect the buttons I had to do this:

if (touch.Pressed()) {
    data->point.x = touch.Y() - 20;
    data->point.y = touch.X() - 50;
}

Because otherwise the coordinates of the Touch were different from those of the TFT.

These are the parts of the program I use:
//Read the touchpad
   void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
   {
     uint16_t touchX = 0, touchY = 0;
     if (touch.Pressed()) {              // inicio touch 0, 0 Inicio tft 160, 120
       data->point.x = touch.Y() - 20;
       data->point.y = touch.X() - 50;
       data->state = LV_INDEV_STATE_PR;
     } else {
       data->state = LV_INDEV_STATE_REL;   
     }
   }
//Touch calibration
   tft.setRotation( 1 );
   touch.setRotation( 1 );
   touch.setCal(0, 4095, 0, 4095, 320, 240, 0);
//lv keyboard design
   ui_Screen1_Keyboard1 = lv_keyboard_create(ui_Screen1);
   lv_obj_set_width(ui_Screen1_Keyboard1, 300);
   lv_obj_set_height(ui_Screen1_Keyboard1, 120);
   lv_obj_set_x(ui_Screen1_Keyboard1, 3);
   lv_obj_set_y(ui_Screen1_Keyboard1, 41);
   lv_obj_set_align(ui_Screen1_Keyboard1, LV_ALIGN_CENTER);
   lv_obj_add_flag(ui_Screen1_Keyboard1, LV_OBJ_FLAG_FLOATING);
   lv_obj_set_scrollbar_mode(ui_Screen1_Keyboard1, LV_SCROLLBAR_MODE_ACTIVE);

If you need more information or I have asked the question wrong, please let me know, as it is the first question I ask.
Thank you all.