#include "cTextInput.hpp" using InputEngine::cTextInput; cTextInput::cTextInput() : cKeyboard("TextInput"), m_text(""), m_caps(false), m_shift(false), INTERNATIONAL_MASK(0xFF80), UNICODE_MASK(0x7F) { /*if (SDL_EnableUNICODE(SDL_QUERY) != SDL_ENABLE) { SDL_EnableUNICODE(SDL_ENABLE); }*/ } cTextInput::cTextInput( const cTextInput& copy ) : cKeyboard(copy), m_text(copy.getText()), m_caps(false), m_shift(false), INTERNATIONAL_MASK(0xFF80), UNICODE_MASK(0x7F) { /*if (SDL_EnableUNICODE(SDL_QUERY) != SDL_ENABLE) { SDL_EnableUNICODE(SDL_ENABLE); }*/ } /*virtual*/ cTextInput::~cTextInput() {} ///Functions /* */ /*virtual*/ void cTextInput::KeyboardCheck( const SDL_Event& event ) { switch(event.key.keysym.sym) { case SDLK_BACKSPACE: case SDLK_DELETE: if(m_text.size() == 0) //m_text.erase(m_text.end() - 1); break; default: { char key = UnicodeValue(event); if(key != 0) m_text += key; } break; } } /* Clears out the Text */ void cTextInput::ClearText() { m_text = ""; } ///Sets void cTextInput::setText( const cString& text ) { m_text = text; } ///Gets const cString& cTextInput::getText() const { return m_text; } //Private const char cTextInput::UnicodeValue( const SDL_Event& event ) { event; /* if (SDL_EnableUNICODE(SDL_QUERY) != SDL_ENABLE) return 0; unsigned long int uni = event.key.keysym.unicode; if( uni == 0 ) // not translatable key (like up or down arrows) { // probably not useful as string input // we could optionally use this to get some value // for it: SDL_GetKeyName( key ); return 0; } else if( ( uni & INTERNATIONAL_MASK ) == 0 ) { return static_cast(uni & UNICODE_MASK); } else // we have a funky international character. one we can't read :( { // we could do nothing, or we can just show some sign of input, like so: return 0; }*/ return 0; }