summaryrefslogtreecommitdiff
path: root/grlib/keyboard.h
diff options
context:
space:
mode:
Diffstat (limited to 'grlib/keyboard.h')
-rw-r--r--grlib/keyboard.h965
1 files changed, 965 insertions, 0 deletions
diff --git a/grlib/keyboard.h b/grlib/keyboard.h
new file mode 100644
index 0000000..06e077c
--- /dev/null
+++ b/grlib/keyboard.h
@@ -0,0 +1,965 @@
+//*****************************************************************************
+//
+// keyboard.h -
+//
+// Copyright (c) 2013-2014 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 2.1.0.12573 of the Tiva Graphics Library.
+//
+//*****************************************************************************
+
+#ifndef __KEYBOARD_H__
+#define __KEYBOARD_H__
+
+//*****************************************************************************
+//
+//! \addtogroup keyboard_api
+//! @{
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+// If building with a C++ compiler, make all of the definitions in this header
+// have a C binding.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+//*****************************************************************************
+//
+//! The structure to describe a image based key on the keyboard.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ // ! The Unicode value for this key.
+ //
+ uint32_t ui32Code;
+
+ //
+ // ! The width as a percentage in units of 1000.
+ //
+ uint16_t ui16Width;
+
+ //
+ // ! The height as a percentage in units of 1000.
+ //
+ uint16_t ui16Height;
+
+ //
+ // ! The X position as a percentage in units of 1000.
+ //
+ uint16_t ui16XPos;
+
+ //
+ // ! The Y position as a percentage in units of 1000.
+ //
+ uint16_t ui16YPos;
+
+ //
+ //! A pointer to the image to be drawn onto this key, if
+ //! KEYBOARD_STYLE_IMG is selected.
+ //
+ const uint8_t *pui8Image;
+
+ //
+ //! A pointer to the image to be drawn onto this key when it is pressed, if
+ //! KEYBOARD_STYLE_IMG is selected.
+ //
+ const uint8_t *pui8PressImage;
+}
+tKeyImage;
+
+//*****************************************************************************
+//
+//! The structure to describe a text based key on the keyboard.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ // ! The Unicode value for this key.
+ //
+ uint32_t ui32Code;
+
+ //
+ // ! The height as a percentage in units of 1000.
+ //
+ uint16_t ui16Width;
+
+ //
+ // ! The width as a percentage in units of 1000.
+ //
+ uint16_t ui16Height;
+
+ //
+ // ! The X position as a percentage in units of 1000.
+ //
+ uint16_t ui16XPos;
+
+ //
+ // ! The Y position as a percentage in units of 1000.
+ //
+ uint16_t ui16YPos;
+}
+tKeyText;
+
+//*****************************************************************************
+//
+// Special Unicode values used by the keyboard
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+//! This code is used to map a backspace key onto a keyboard. This is used
+//! in the tKeyText.ui32Code or tKeyImage.ui32Code values.
+//
+//*****************************************************************************
+#define UNICODE_BACKSPACE 0x00000008
+
+//*****************************************************************************
+//
+//! This code is used to map a return/enter key onto a keyboard. This is used
+//! in the tKeyText.ui32Code or tKeyImage.ui32Code values.
+//
+//*****************************************************************************
+#define UNICODE_RETURN 0x0000000D
+
+//*****************************************************************************
+//
+//! This code is used to map a shift/caps-lock key onto a keyboard. This value
+//! causes the keyboard to toggle between lower-case, upper-case and caps lock
+//! modes. This value is used in the tKeyText.ui32Code or tKeyImage.ui32Code
+//! values.
+//
+//*****************************************************************************
+#define UNICODE_CUSTOM_SHIFT 0x000f0000
+
+//*****************************************************************************
+//
+//! This code is used to map a mode toggle key onto a keyboard. This value
+//! causes the keyboard to toggle between the custom entries in a keyboard.
+//! This value is used in the tKeyText.ui32Code or tKeyImage.ui32Code
+//! values.
+//
+//*****************************************************************************
+#define UNICODE_CUSTOM_MODE_TOG 0x000f0001
+
+//*****************************************************************************
+//
+//! This code is used to identify a keyboard as the upper-case keyboard.
+//
+//*****************************************************************************
+#define UNICODE_CUSTOM_UPCASE 0x000f0002
+
+//*****************************************************************************
+//
+//! This code is used to identify a keyboard as the lower-case keyboard.
+//
+//*****************************************************************************
+#define UNICODE_CUSTOM_LOWCASE 0x000f0003
+
+//*****************************************************************************
+//
+//! This code is used to identify a keyboard as the lower-case keyboard.
+//
+//*****************************************************************************
+#define UNICODE_CUSTOM_NUMERIC 0x000f0004
+
+//*****************************************************************************
+//
+//! This code is used to identify the first custom keyboard entry.
+//
+//*****************************************************************************
+#define UNICODE_CUSTOM_KBD 0x000f0005
+
+//*****************************************************************************
+//
+// Keyboard events that are passed to the pfnOnEvent function.
+//
+//*****************************************************************************
+#define KEYBOARD_EVENT_PRESS 0x00000001
+#define KEYBOARD_EVENT_RELEASE 0x00000002
+
+//*****************************************************************************
+//
+//! This structure holds a single keyboard entry. Keyboards are typically
+//! made up of an array of these structures.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ //! This value holds the identifier for this keyboard.
+ //
+ uint32_t ui32Code;
+
+ //
+ //! This value holds the total number of keys for this keyboard entry.
+ //
+ uint16_t ui16NumKeys;
+
+ //
+ //! This value holds the static flag entries for this keyboard entry.
+ //
+ uint16_t ui16Flags;
+
+ //
+ //! This union holds either the text based keys or image based keys for
+ //! this keyboard.
+ //
+ union
+ {
+ const tKeyImage *psKeysImage;
+ const tKeyText *psKeysText;
+ }
+ uKeys;
+}
+tKeyboard;
+
+//*****************************************************************************
+//
+//! The structure that describes a keyboard widget.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ //! The generic widget information.
+ //
+ tWidget sBase;
+
+ //
+ //! The style for this widget. This is a set of flags defined by
+ //! KEYBOARD_STYLE_xxx.
+ //
+ uint32_t ui32Style;
+
+ //
+ //! The 24-bit RGB color used to fill background of the on-screen
+ //! keyboard if KEYBOARD_STYLE_BG is selected.
+ //
+ uint32_t ui32BackgroundColor;
+
+ //
+ //! The 24-bit RGB color used to fill keys of the on-screen
+ //! keyboard if KEYBOARD_STYLE_FILL is selected, and to use as the
+ //! background color if KEYBOARD_STYLE_TEXT_OPAQUE is selected.
+ //
+ uint32_t ui32FillColor;
+
+ //
+ //! The 24-bit RGB color used to fill keys when pressed, if
+ //! KEYBOARD_STYLE_FILL is selected, and to use as the background color
+ //! if KEYBOARD_STYLE_TEXT_OPAQUE is selected.
+ //
+ uint32_t ui32PressFillColor;
+
+ //
+ //! The 24-bit RGB color used to outline the keys, if
+ //! KEYBOARD_STYLE_OUTLINE is selected.
+ //
+ uint32_t ui32OutlineColor;
+
+ //
+ //! The 24-bit RGB color used to draw text on the keys.
+ //
+ uint32_t ui32TextColor;
+
+ //
+ //! A pointer to the font used to render the text on the keys.
+ //
+ const tFont *psFont;
+
+ //
+ //! The number of pointer events to delay before starting to auto-repeat,
+ //! if KEYBOARD_STYLE_AUTO_REPEAT is selected. The amount of time to which
+ //! this corresponds is dependent upon the rate at which pointer events are
+ //! generated by the pointer driver.
+ //
+ uint16_t ui16AutoRepeatDelay;
+
+ //
+ //! The number of pointer events between key presses generated by the
+ //! auto-repeat function, if KEYBOARD_STYLE_AUTO_REPEAT is selected. The
+ //! amount of time to which this corresponds is dependent up on the rate at
+ //! which pointer events are generated by the pointer driver.
+ //
+ uint16_t ui16AutoRepeatRate;
+
+ //
+ //! The number of pointer events that have occurred. This is used when
+ //! KEYBOARD_STYLE_AUTO_REPEAT is selected to generate the auto-repeat
+ //! events.
+ //
+ uint32_t ui32AutoRepeatCount;
+
+ //
+ //! The active keyboard index, which should be initialized to 0.
+ //
+ uint32_t ui32Active;
+
+ //
+ //! The total number of active keyboards in the psKeyboards structure
+ //! member.
+ //
+ uint32_t ui32NumKeyboards;
+
+ //
+ //! The array of keyboards used by the application.
+ //
+ const tKeyboard *psKeyboards;
+
+ //
+ //! A pointer to the function to be called when a key is pressed.
+ //! This is repeatedly called when KEYBOARD_STYLE_AUTO_REPEAT is selected.
+ //
+ void (*pfnOnEvent)(tWidget *psWidget, uint32_t ui32Key,
+ uint32_t ui32Event);
+
+ //
+ //! The active key being pressed.
+ //
+ uint32_t ui32KeyPressed;
+
+ //
+ //! Internal state flags for the keyboard.
+ //
+ uint32_t ui32Flags;
+}
+tKeyboardWidget;
+
+//*****************************************************************************
+//
+//! This flag indicates that the keys should be outlined.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_OUTLINE 0x00000001
+
+//*****************************************************************************
+//
+//! This flag indicates that the keys should be filled.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_FILL 0x00000002
+
+//*****************************************************************************
+//
+//! This flag indicates that the keys should have text drawn on them.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_TEXT 0x00000004
+
+//*****************************************************************************
+//
+//! This flag indicates that the keys should have an image drawn on them.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_IMG 0x00000008
+
+//*****************************************************************************
+//
+//! This flag indicates that the text on the keys should be drawn opaque (in
+//! other words, drawing the background pixels as well as the foreground
+//! pixels).
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_TEXT_OPAQUE \
+ 0x00000010
+
+//*****************************************************************************
+//
+//! This flag indicates that the keys should auto-repeat, generating
+//! repeated click events while it is pressed.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_AUTO_REPEAT \
+ 0x00000020
+
+//*****************************************************************************
+//
+//! This flag indicates that a key is pressed.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_PRESS_NOTIFY \
+ 0x00000040
+
+//*****************************************************************************
+//
+//! This flag indicates that the key press callback should be made when
+//! the key is released rather than when it is pressed. This does not
+//! affect the operation of auto repeat keys.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_RELEASE_NOTIFY \
+ 0x00000080
+
+//*****************************************************************************
+//
+//! This flag indicates that the keys should be filled.
+//
+//*****************************************************************************
+#define KEYBOARD_STYLE_BG 0x00000100
+
+
+//*****************************************************************************
+//
+//! Declares an initialized keyboard widget data structure.
+//!
+//! \param psParent is a pointer to the parent widget.
+//! \param psNext is a pointer to the sibling widget.
+//! \param psChild is a pointer to the first child widget.
+//! \param psDisplay is a pointer to the display on which to draw the keyboard.
+//! \param i32X is the X coordinate of the upper left corner of the keyboard.
+//! \param i32Y is the Y coordinate of the upper left corner of the keyboard.
+//! \param i32Width is the width of the keyboard.
+//! \param i32Height is the height of the keyboard.
+//! \param ui32Style is the style to be applied to the keyboard.
+//! \param ui32BackgroundColor is the background color for the keyboard.
+//! \param ui32FillColor is the color used to fill in the keyboard.
+//! \param ui32PressFillColor is the color used to fill in the keyboard when
+//! a key is pressed.
+//! \param ui32OutlineColor is the color used to outline the keys.
+//! \param ui32TextColor is the color used to draw text on the keys.
+//! \param psFont is a pointer to the font used to draw text on the keys.
+//! \param ui16AutoRepeatDelay is the delay before starting auto-repeat.
+//! \param ui16AutoRepeatRate is the rate at which auto-repeat events are
+//! generated.
+//! \param ui32NumKeyboards is the number of keyboards in the psKeyboard
+//! parameter.
+//! \param psKeyboards is a pointer to the keyboard array to use for this
+//! keyboard.
+//! \param pfnOnEvent is a pointer to the function that is called when a key
+//! is pressed.
+//!
+//! This macro provides an initialized keyboard widget data structure, which
+//! can be used to construct the widget tree at compile time in global
+//! variables (as opposed to run-time via function calls). This must be
+//! assigned to a variable, such as:
+//!
+//! \verbatim
+//! tKeyboardWidget g_sKeyboard = KeyboardStruct(...);
+//! \endverbatim
+//!
+//! Or, in an array of variables:
+//!
+//! \verbatim
+//! tKeyboardWidget g_psKeyboards[] =
+//! {
+//! KeyboardStruct(...),
+//! KeyboardStruct(...)
+//! };
+//! \endverbatim
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b PB_STYLE_OUTLINE to indicate that the keys should be outlined.
+//! - \b PB_STYLE_FILL to indicate that the keys should be filled.
+//! - \b PB_STYLE_IMG to indicate that the keys should have an image
+//! drawn on them (using \e pui8Image).
+//! - \b PB_STYLE_TEXT_OPAQUE to indicate that the key text should be
+//! drawn opaque (in other words, drawing the background pixels).
+//! - \b PB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used.
+//! - \b PB_STYLE_RELEASE_NOTIFY to indicate that the callback should be made
+//! when a key is released. If absent, the callback is called when the
+//! key is initially pressed.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define KeyboardStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32BackgroundColor, \
+ ui32FillColor, ui32PressFillColor, ui32OutlineColor, \
+ ui32TextColor, psFont, ui16AutoRepeatDelay, \
+ ui16AutoRepeatRate, ui32NumKeyboards, psKeyboards, \
+ pfnOnEvent) \
+ { \
+ { \
+ sizeof(tKeyboardWidget), \
+ (tWidget *)(psParent), \
+ (tWidget *)(psNext), \
+ (tWidget *)(psChild), \
+ psDisplay, \
+ { \
+ i32X, \
+ i32Y, \
+ (i32X) + (i32Width) - 1, \
+ (i32Y) + (i32Height) - 1 \
+ }, \
+ KeyboardMsgProc \
+ }, \
+ ui32Style, \
+ ui32BackgroundColor, \
+ ui32FillColor, \
+ ui32PressFillColor, \
+ ui32OutlineColor, \
+ ui32TextColor, \
+ psFont, \
+ ui16AutoRepeatDelay, \
+ ui16AutoRepeatRate, \
+ 0, \
+ 0, \
+ ui32NumKeyboards, \
+ psKeyboards, \
+ pfnOnEvent, \
+ 0, \
+ 0 \
+ }
+
+//*****************************************************************************
+//
+//! Declares an initialized variable containing a keyboard widget data
+//! structure.
+//!
+//! \param sName is the name of the variable to be declared.
+//! \param psParent is a pointer to the parent widget.
+//! \param psNext is a pointer to the sibling widget.
+//! \param psChild is a pointer to the first child widget.
+//! \param psDisplay is a pointer to the display on which to draw the keyboard.
+//! \param i32X is the X coordinate of the upper left corner of the keyboard.
+//! \param i32Y is the Y coordinate of the upper left corner of the keyboard.
+//! \param i32Width is the width of the keyboard.
+//! \param i32Height is the height of the keyboard.
+//! \param ui32Style is the style to be applied to the keyboard.
+//! \param ui32BackgroundColor is the background color for the keyboard.
+//! \param ui32FillColor is the color used to fill in the keys.
+//! \param ui32PressFillColor is the color used to fill in the keys when
+//! pressed.
+//! \param ui32OutlineColor is the color used to outline the keys.
+//! \param ui32TextColor is the color used to draw text on the keys.
+//! \param psFont is a pointer to the font to be used to draw text on the keys.
+//! \param ui16AutoRepeatDelay is the delay before starting auto-repeat.
+//! \param ui16AutoRepeatRate is the rate at which auto-repeat events are
+//! generated.
+//! \param ui32NumKeyboards is the number of keyboards in the \e psKeyboards
+//! array.
+//! \param psKeyboards is an array of keyboards that are displayed as a part
+//! of this keyboard.
+//! \param pfnOnEvent is a pointer to the function that is called when a key is
+//! pressed.
+//!
+//! This macro provides an initialized keyboard widget data structure, which
+//! can be used to construct the widget tree at compile time in global
+//! variables (as opposed to run-time via function calls).
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b PB_STYLE_OUTLINE to indicate that the keys should be outlined.
+//! - \b PB_STYLE_FILL to indicate that the keys should be filled.
+//! - \b PB_STYLE_IMG to indicate that the keys should have an image
+//! drawn on them (using \e pui8Image).
+//! - \b PB_STYLE_TEXT_OPAQUE to indicate that the key text should be
+//! drawn opaque (in other words, drawing the background pixels).
+//! - \b PB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used.
+//! - \b PB_STYLE_RELEASE_NOTIFY to indicate that the callback should be made
+//! when a key is released. If absent, the callback is called when a key
+//! is initially pressed.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define Keyboard(sName, psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32BackgroundColor, \
+ ui32FillColor, ui32PressFillColor, ui32OutlineColor, \
+ ui32TextColor, psFont, ui16AutoRepeatDelay, \
+ ui16AutoRepeatRate, ui32NumKeyboards, psKeyboards, \
+ pfnOnEvent) \
+ tKeyboardWidget sName = \
+ KeyboardStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, \
+ ui32BackgroundColor, ui32FillColor, \
+ ui32PressFillColor, ui32OutlineColor, \
+ ui32TextColor, psFont, ui16AutoRepeatDelay, \
+ ui16AutoRepeatRate, ui32NumKeyboards, psKeyboards, \
+ pfnOnEvent)
+
+//*****************************************************************************
+//
+//! Sets the auto-repeat delay for a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//! \param ui16Delay is the number of pointer events before auto-repeat starts.
+//!
+//! This function sets the delay before auto-repeat begins. Unpredictable
+//! behavior will occur if this is called while a key is pressed.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardAutoRepeatDelaySet(psWidget, ui16Delay) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui16AutoRepeatDelay = ui16Delay; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables auto-repeat for a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function disables the auto-repeat behavior of a keyboard.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardAutoRepeatOff(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style &= ~(KEYBOARD_STYLE_AUTO_REPEAT); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables auto-repeat for a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function enables the auto-repeat behavior of a keyboard.
+//! Unpredictable behavior will occur if this is called while a key is pressed.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardAutoRepeatOn(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style |= KEYBOARD_STYLE_AUTO_REPEAT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the auto-repeat rate for a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//! \param ui16Rate is the number of pointer events between auto-repeat events.
+//!
+//! This function sets the rate at which auto-repeat events occur.
+//! Unpredictable behavior will occur if this is called while a key is pressed.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardAutoRepeatRateSet(psWidget, ui16Rate) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui16AutoRepeatRate = ui16Rate; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the function to call when this keyboard widget is pressed.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//! \param pfnOnEventFn is a pointer to the function to call.
+//!
+//! This function sets the function to be called when a key is pressed. The
+//! supplied function is called when a key is first pressed, and then repeated
+//! while the key is pressed if auto-repeat is enabled.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardCallbackSet(psWidget, pfnOnEventFn) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->pfnOnEvent = pfnOnEventFn; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the fill color of a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to fill the keys.
+//!
+//! This function changes the color used to fill the keys on the display. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardFillColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32FillColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the fill color of a keyboard when it is pressed.
+//!
+//! \param psWidget is a pointer to the keyboard widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to fill the keys when they
+//! are pressed.
+//!
+//! This function changes the color used to fill the keys on the display when
+//! a key is pressed. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardFillColorPressedSet(psWidget, ui32Color) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32PressFillColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables filling of keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function disables the filling of keys in a keyboard widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardFillOff(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style &= ~(KEYBOARD_STYLE_FILL); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables filling of a keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function enables the filling of a push key in a keyboard widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardFillOn(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style |= KEYBOARD_STYLE_FILL; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the font for a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//! \param pFnt is a pointer to the font to use to draw text on the keyboard.
+//!
+//! This function changes the font used to draw text on keys in a keyboard.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardFontSet(psWidget, pFnt) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ const tFont *pF = pFnt; \
+ psW->psFont = pF; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the outline color for keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to outline the keys.
+//!
+//! This function changes the color used to outline the keys in a keyboard on
+//! the display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardOutlineColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32OutlineColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables outlining of keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function disables the outlining of a keys for a keyboard widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardOutlineOff(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style &= ~(KEYBOARD_STYLE_OUTLINE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables outlining of keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function enables the outlining of keys for a keyboard widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardOutlineOn(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style |= KEYBOARD_STYLE_OUTLINE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the text color of keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to draw text on the keys.
+//!
+//! This function changes the color used to draw text on the keys on the
+//! display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardTextColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32TextColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables opaque text on keys in a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function disables the use of opaque text on a keyboard. When
+//! not using opaque text, only the foreground pixels of the text are drawn on
+//! the screen, allowing the previously drawn pixels (such as the key image)
+//! to show through the text.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardTextOpaqueOff(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style &= ~(KEYBOARD_STYLE_TEXT_OPAQUE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables opaque text on a keyboard widget.
+//!
+//! \param psWidget is a pointer to the keyboard widget to modify.
+//!
+//! This function enables the use of opaque text on a keyboard. When
+//! using opaque text, both the foreground and background pixels of the text
+//! are drawn on the screen, blocking out the previously drawn pixels.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define KeyboardTextOpaqueOn(psWidget) \
+ do \
+ { \
+ tKeyboardWidget *psW = psWidget; \
+ psW->ui32Style |= KEYBOARD_STYLE_TEXT_OPAQUE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! The total number of keyboards in the g_psKeyboardUSEnglish array.
+//
+//*****************************************************************************
+#define NUM_KEYBOARD_US_ENGLISH 3
+
+extern const tKeyboard g_psKeyboardUSEnglish[NUM_KEYBOARD_US_ENGLISH];
+
+//*****************************************************************************
+//
+// Prototypes for the keyboard widget APIs.
+//
+//*****************************************************************************
+extern int32_t KeyboardMsgProc(tWidget *psWidget, uint32_t ui32Msg,
+ uint32_t ui32Param1, uint32_t ui32Param2);
+extern void KeyboardInit(tKeyboardWidget *psWidget, const tDisplay *psDisplay,
+ int32_t i32X, int32_t i32Y, int32_t i32Width,
+ int32_t i32Height);
+
+//*****************************************************************************
+//
+// Mark the end of the C bindings section for C++ compilers.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+}
+#endif
+
+//*****************************************************************************
+//
+// Close the Doxygen group.
+//! @}
+//
+//*****************************************************************************
+
+#endif //__KEYBOARD_H__