-+ if ( Caca_lastkey ) {
-+ /* Release previous key if necessary */
-+ if ( !event ) {
-+ struct timeval now;
-+ Uint64 t1, t2;
-+ gettimeofday ( &now, NULL );
-+ t1 = (Uint64)now.tv_sec * 1000000 + now.tv_usec;
-+ t2 = (Uint64)Caca_lasttime.tv_sec * 1000000
-+ + Caca_lasttime.tv_usec;
-+ if ( t1 < t2 + 100000 )
-+ break;
-+ }
-+ keysym.scancode = Caca_lastkey;
-+ keysym.sym = Caca_lastkey;
-+ keysym.mod = KMOD_NONE;
-+ keysym.unicode = 0;
-+ if ( SDL_TranslateUNICODE ) {
-+ keysym.unicode = Caca_lastkey;
-+ }
-+ posted += SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
-+ Caca_lastkey = 0;
-+ }
-+ if ( event & CACA_EVENT_KEY_PRESS ) {