2#include "TextElement.hpp" 
    5#define KEYCODE_COUNT 47 
   11    EKeyboard(std::function<
void(
char)> typeAction);
 
   18    void just_type(
const char input);
 
   23    const std::string& getTextInput();
 
   24    std::string textInput;
 
   28    std::function<void(
char)> typeAction = NULL;
 
   32    const char* lower_keys = 
"`1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./";
 
   33    const char* upper_keys = 
"~!@#$\%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?";
 
   34    int breaks[4] = { 13, 13, 11, 10 };
 
   39    std::vector<std::string*> rows;
 
   41    const CST_Keycode usbKeys[KEYCODE_COUNT] = {
 
   42        SDLK_BACKQUOTE, SDLK_1, SDLK_2, SDLK_3, SDLK_4, SDLK_5, SDLK_6, SDLK_7, SDLK_8, SDLK_9, SDLK_0, SDLK_MINUS, SDLK_EQUALS,
 
   43         SDLK_q, SDLK_w, SDLK_e, SDLK_r, SDLK_t, SDLK_y, SDLK_u, SDLK_i, SDLK_o, SDLK_p, SDLK_LEFTBRACKET, SDLK_RIGHTBRACKET, SDLK_BACKSLASH,
 
   44          SDLK_a, SDLK_s, SDLK_d, SDLK_f, SDLK_g, SDLK_h, SDLK_j, SDLK_k, SDLK_l, SDLK_SEMICOLON, SDLK_QUOTE,
 
   45           SDLK_z, SDLK_x, SDLK_c, SDLK_v, SDLK_b, SDLK_n, SDLK_m, SDLK_COMMA, SDLK_PERIOD, SDLK_SLASH
 
   48    inline int rowCount() {
 
   49        return (
int)rows.size();
 
   52    inline int rowLength(
int row) {
 
   53        return (
int)rows[row]->size() / 2;
 
   90    bool hasRoundedKeys = 
false;
 
   91    CST_Font* roundKeyFont = NULL;
 
   93    bool touchMode = 
false;
 
   94    bool immersiveMode = 
false; 
 
   97    bool preventEnterAndTab = 
false; 
 
   98    bool storeOwnText = 
false; 
 
  100    bool isTouchDrag = 
false; 
 
  102    void type(
int y, 
int x);
 
  103    void generateEKeyboard();
 
void render(Element *parent)
display the current state of the display
 
bool process(InputEvents *event)
process any input that is received for this element
 
Element * parent
the parent element (can sometimes be null if it isn't set)