- Timestamp:
- Nov 26, 2005, 9:56:11 PM (19 years ago)
- Location:
- trunk/src/lib
- Files:
-
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/event/Makefile.am
r5463 r5786 4 4 noinst_LIBRARIES = libORXevent.a 5 5 6 libORXevent_a_SOURCES = event.cc \ 7 event_handler.cc \ 6 libORXevent_a_SOURCES = event_handler.cc \ 8 7 event_listener.cc \ 9 8 key_mapper.cc \ -
trunk/src/lib/event/event.h
r5391 r5786 27 27 28 28 //! An abstract event class 29 class Event { 30 31 public: 32 Event(); 33 34 int offset; //!< offset in the event type array 29 struct Event { 35 30 int type; //!< the type field 36 31 bool bPressed; //!< is true, if the button/mouse was pressed, false if released -
trunk/src/lib/event/event_handler.cc
r5553 r5786 46 46 /* now initialize them all to zero */ 47 47 this->flush(ES_ALL); 48 this->withUNICODE(false); 48 49 49 50 this->state = ES_GAME; 50 51 this->keyMapper = NULL; 51 52 this->stateStack = NULL; 53 52 54 } 53 55 … … 247 249 248 250 251 void EventHandler::withUNICODE(bool enableUNICODE) 252 { 253 SDL_EnableUNICODE(enableUNICODE); 254 this->bUNICODE = enableUNICODE; 255 } 256 257 249 258 /** 250 259 * core function of event handler: receives all events from SDL … … 264 273 ev.bPressed = true; 265 274 ev.type = event.key.keysym.sym; 275 if (unlikely(this->bUNICODE)) 276 ev.x = event.key.keysym.unicode; 266 277 break; 267 278 case SDL_KEYUP: 268 279 ev.bPressed = false; 269 280 ev.type = event.key.keysym.sym; 281 if (unlikely(this->bUNICODE)) 282 ev.x = event.key.keysym.unicode; 270 283 break; 271 284 case SDL_MOUSEMOTION: -
trunk/src/lib/event/event_handler.h
r5776 r5786 41 41 inline bool isSubscribed(elState state, int eventType) { return(listeners[state][eventType] == NULL)?false:true; }; 42 42 43 44 void withUNICODE(bool enableUNICODE); 45 43 46 void process(); 44 47 … … 58 61 KeyMapper* keyMapper; //!< reference to the key mapper. 59 62 63 bool bUNICODE; //!< If unicode should be enabled. 60 64 }; 61 65 -
trunk/src/lib/shell/shell.cc
r5783 r5786 129 129 130 130 EventHandler::getInstance()->pushState(ES_SHELL); 131 EventHandler::getInstance()->withUNICODE(true); 132 131 133 this->setRelCoorSoft2D(0, 0, 1, 5); 132 134 … … 149 151 this->bActive = false; 150 152 153 EventHandler::getInstance()->withUNICODE(false); 151 154 EventHandler::getInstance()->popState(); 152 155 -
trunk/src/lib/shell/shell_input.cc
r5785 r5786 317 317 { 318 318 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 } 323 336 } 324 337 } … … 336 349 this->help(); 337 350 else if (event.type == SDLK_F2) 351 { 338 352 ;//this->debug(); 353 } 339 354 else if (event.type == SDLK_UP) 355 { 340 356 this->historyMoveUp(); 357 this->pressedKey = event.type; 358 } 341 359 else if (event.type == SDLK_DOWN) 360 { 342 361 this->historyMoveDown(); 362 this->pressedKey = event.type; 363 } 343 364 else if (event.type == SDLK_TAB) 344 365 this->completion->autoComplete(); … … 350 371 } 351 372 else if (event.type == SDLK_RETURN) 373 { 352 374 this->executeCommand(); 375 this->pressedKey = event.type; 376 } 353 377 // any other keyboard key 354 378 else if (likely(event.type < 127)) 355 379 { 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; 369 384 } 370 385 else // if(!event.bPressed) 371 386 { 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; 375 390 this->delayed = 0.0; 376 391 } -
trunk/src/lib/shell/shell_input.h
r5784 r5786 60 60 float repeatDelay; //!< The delay of the first Character of a given Character. 61 61 float delayed; //!< how much of the delay is remaining. 62 intpressedKey; //!< the pressed key that will be repeated.62 Uint16 pressedKey; //!< the pressed key that will be repeated. 63 63 64 64 std::list<char*> history; //!< The history of given commands.
Note: See TracChangeset
for help on using the changeset viewer.