Getting Touch Input from a Graphics Screen

This page contains information for the Graphics Library found in the Microchip Libraries for Applications (MLA). It is not relevant for the MPLAB® Harmony Graphics Library.

The TouchGetMsg Function

Graphic Application projects created by Microchip typically have the TouchGetMsg(&msg) function as the first function called after the Display routine has finished processing the display list.
TouchGetMsg determines if and where a touch event has occurred. A touch event is a touch, a release, or a movement on the screen. If an event is observed, the data structure MSG is populated with the touch info. The data structure is then passed on to GFX_GOL_ObjectMessage for processing.


Supplied by Microchip, TouchGetMsg is considered part of the application and not part of the Graphics Library. TouchGetMsg was written to read the specific resistive-touch display panels used on Microchip evaluation boards. If you wish to use display panels other than those offered by Microchip, you will have to rewrite the function to work with the selected display panel.

Msg Data Structure

TouchGetMsg will populate a data structure each time it is called. In Microchip Graphics applications, this data structure is named Msg. In addition to display panels, the Msg data structure was designed to record touch events on other media such as keypads or "side buttons".

This article explains how TouchGetMsg works with touch displays. For a complete description of the Msg data structure and how it works with other input devices, please review the graphics message structure page.

Defined in the file gfx-gol.h, the structure of the message is:


Msg can be defined in any file with the following code:

When Populated by TouchGetMsg, Msg will contain:


From TouchGetMsg(&Msg):

  • Msg.type always contains value: TYPE_TOUCHSCREEN
  • Msg.param1 contains the X position of the event
  • Msg.param2 contains the Y position of the event
  • Msg.uiEvent contains the code for the specific event detected
uiEvent Codes
Event Code Touch Event Detected
EVENT_INVALID Screen was untouched last time and remains untouched
EVENT_MOVE Screen was touched last time but this time the touch is in a different location
EVENT_PRESS Screen was untouched last time and is touched this time
EVENT_STILLPRESS Screen was touched last time and is still touched in the same location
EVENT_RELEASE Screen was touched last time, but is now untouched

Once filled, Msg is passed on to GFX_GOL_ObjectMessage for processing.

For a complete description of the Msg data structure and how it works with other input devices, please review the graphics message structure page.

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.