I have idea to make function like
gui_keypad(char* text, unsigned int max_text_length);
This will show keypad stop execution of code where gui_keypad called, get text from user letter by letter, when user finished typing can press exit and then program flow will go back to gui_keypad call place with text stored in place where pointer: 'char* text' points to.
Added:
I forget there will be one more parameter like:
gui_keypad(char* text, unsigned int max_text_length, KeypadMode mode);
where KeypadMode is used to choose keyboard type:
typedef KeypadMode enum{
KEYPAD_MODE_LETTERS,
KEYPAD_MODE_NUMBERS,
KEYPAD_MODE_SINGLE_CHARACTER,
};