VirtualKeyboardFeaturePkg: Pre OS virtual keyboard touch response are very slow with I2C touch panel

On one Touch, multiple Reads happend and  this reads varying based on Key Press time.
Resulting in Multiple key press update on screen. This condition avoids KeyPressed skips
resulting due to faster key press and update only on valid key press.

Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Madhan Pethaiyan <madhan.pethaiyan@intel.com>
Cc: Kathappan Esakkithevar <kathappan.esakkithevar@intel.com>
Cc: Madhusudhan Balaji <madhusudhan.balaji@intel.com>
Signed-off-by: KalaiyarasanX Thangaraj <kalaiyarasanx.thangaraj@intel.com>
Reviewed-by:Balaji, Madhusudhan madhusudhan.balaji@intel.com
Reviewed-by: Dandan Bi <dandan.bi@intel.com>
This commit is contained in:
KalaiyarasanX Thangaraj
2022-08-01 11:05:10 +05:30
committed by dandan bi
parent c45155be7b
commit d09dafd0b9
2 changed files with 18 additions and 0 deletions
@@ -512,6 +512,18 @@ VkTimer (
if (!VkContext->TouchActive) {
VkContext->KeyPressed = FALSE;
}
//
// On one Touch, multiple Reads happend and this reads varying based on Key Press time.
// Resulting in Multiple key press update on screen. This condition avoids KeyPressed skips
// resulting due to faster key press and update only on valid key press.
//
if ((Point.CurrentX != VkContext->PreviousX) || (Point.CurrentY != VkContext->PreviousY)) {
VkContext->KeyPressed = FALSE;
}
VkContext->PreviousX = Point.CurrentX;
VkContext->PreviousY = Point.CurrentY;
ConvertCoordinate (VkContext, Point, &TouchX, &TouchY);
if (!VkContext->KeyPressed &&
@@ -373,6 +373,12 @@ struct _VK_CONTEXT {
BOOLEAN IsRedrawUpdateUI;
VK_PAGE_TYPE PageNumber;
LIST_ENTRY NotifyList;
///
/// Previous X and Y axis Buffer
///
UINTN PreviousX;
UINTN PreviousY;
};
///