Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5786 in orxonox.OLD for trunk/src/lib/shell


Ignore:
Timestamp:
Nov 26, 2005, 9:56:11 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: key-repeat in the Shell is smoother now

Location:
trunk/src/lib/shell
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/shell/shell.cc

    r5783 r5786  
    129129
    130130  EventHandler::getInstance()->pushState(ES_SHELL);
     131  EventHandler::getInstance()->withUNICODE(true);
     132
    131133  this->setRelCoorSoft2D(0, 0, 1, 5);
    132134
     
    149151  this->bActive = false;
    150152
     153  EventHandler::getInstance()->withUNICODE(false);
    151154  EventHandler::getInstance()->popState();
    152155
  • trunk/src/lib/shell/shell_input.cc

    r5785 r5786  
    317317  {
    318318    this->delayed = this->repeatRate;
    319     if (this->pressedKey == SDLK_BACKSPACE)
    320       this->removeCharacters(1);
    321     else if (pressedKey < 127)
    322       this->addCharacter(this->pressedKey);
     319    switch (this->pressedKey )
     320    {
     321      case SDLK_BACKSPACE:
     322        this->removeCharacters(1);
     323        break;
     324      case SDLK_UP:
     325        this->historyMoveUp();
     326        break;
     327      case SDLK_DOWN:
     328        this->historyMoveDown();
     329        break;
     330      default:
     331      {
     332        if (likely(pressedKey < 127))
     333          this->addCharacter(this->pressedKey);
     334      }
     335    }
    323336  }
    324337}
     
    336349      this->help();
    337350    else if (event.type == SDLK_F2)
     351    {
    338352      ;//this->debug();
     353    }
    339354    else if (event.type == SDLK_UP)
     355    {
    340356      this->historyMoveUp();
     357      this->pressedKey = event.type;
     358    }
    341359    else if (event.type == SDLK_DOWN)
     360    {
    342361      this->historyMoveDown();
     362      this->pressedKey = event.type;
     363    }
    343364    else if (event.type == SDLK_TAB)
    344365      this->completion->autoComplete();
     
    350371    }
    351372    else if (event.type == SDLK_RETURN)
     373    {
    352374      this->executeCommand();
     375      this->pressedKey = event.type;
     376    }
    353377    // any other keyboard key
    354378    else if (likely(event.type < 127))
    355379    {
    356       Uint8 *keystate = SDL_GetKeyState(NULL);
    357       this->delayed = this->repeatDelay;
    358       if (unlikely( keystate[SDLK_LSHIFT] || keystate[SDLK_RSHIFT] ))
    359       {
    360         this->pressedKey = event.type-32;
    361         this->addCharacter(event.type-32);
    362       }
    363       else
    364       {
    365         this->pressedKey = event.type;
    366         this->addCharacter(event.type);
    367       }
    368     }
     380      this->addCharacter(event.x);
     381      this->pressedKey = event.x;
     382    }
     383    this->delayed = this->repeatDelay;
    369384  }
    370385  else // if(!event.bPressed)
    371386  {
    372     if (this->pressedKey == event.type || (this->pressedKey == event.type - 32))
    373     {
    374       this->pressedKey = SDLK_FIRST;
     387    if (this->pressedKey == event.x)
     388    {
     389      this->pressedKey = 0;
    375390      this->delayed = 0.0;
    376391    }
  • trunk/src/lib/shell/shell_input.h

    r5784 r5786  
    6060   float                       repeatDelay;            //!< The delay of the first Character of a given Character.
    6161   float                       delayed;                //!< how much of the delay is remaining.
    62    int                         pressedKey;             //!< the pressed key that will be repeated.
     62   Uint16                      pressedKey;             //!< the pressed key that will be repeated.
    6363
    6464   std::list<char*>            history;                //!< The history of given commands.
Note: See TracChangeset for help on using the changeset viewer.