All pastes #629768 Raw Edit

Untitled

public text v1 · immutable
·published 2007-07-22 17:42 UTC
rendered paste body
ProcessInputEvent (const SDL_Event *Event)
{
        if (!InputInitialized)
                return;

        ProcessMouseEvent (Event);
        VControl_HandleEvent (Event);

        if (Event->type == SDL_KEYDOWN || Event->type == SDL_KEYUP)
        {       // process character input event, if any
                SDLKey k = Event->key.keysym.sym;
                wchar_t map_key = Event->key.keysym.unicode;

                if (k < 0 || k > num_keys)
                        k = num_keys; // for unknown keys

                if (Event->type == SDL_KEYDOWN)
                {
                        int newtail;

                        // dont care about the non-printable, non-char
                        if (!map_key)
                                return;

                        kbdstate[k]++;

                        newtail = (kbdtail + 1) & (KBDBUFSIZE - 1);
                        // ignore the char if the buffer is full
                        if (newtail != kbdhead)
                        {
                                kbdbuf[kbdtail] = map_key;
                                kbdtail = newtail;
                                lastchar = map_key;
                                ImmediateInputState.menu[KEY_MENU_ANY]++;
                        }
                }
                else if (Event->type == SDL_KEYUP)
                {
                        if (kbdstate[k] == 0)
                        {       // something is fishy -- better to reset the
                                // repeatable state to avoid big problems
                                ImmediateInputState.menu[KEY_MENU_ANY] = 0;
                        }
                        else
                        {
                                kbdstate[k]--;
                                if (ImmediateInputState.menu[KEY_MENU_ANY] > 0)
                                        ImmediateInputState.menu[KEY_MENU_ANY]--;
                        }
                }
        }
}