Ejemplo n.º 1
0
        public override void Update(TimeSpan elapsedTime)
        {
            if (keyStates.Keys.Count > 0)
            {
                foreach (var key in keyStates.Keys)
                {
                    switch (keyStates[key])
                    {
                    case TVButtonState.Pressed:
                    case TVButtonState.Released:
                        toRemove.Add(key);
                        break;
                    }
                }

                if (toRemove.Count > 0)
                {
                    foreach (var key in toRemove)
                    {
                        if (keyStates[key] == TVButtonState.Pressed)
                        {
                            keyStates[key] = TVButtonState.Down;
                        }
                        else
                        {
                            keyStates.Remove(key);
                        }
                    }
                    toRemove.Clear();
                }
            }

            int keyCount = 0;

            InputEngine.GetKeyBuffer(keyBuffer, ref keyCount);
            for (int i = 0; i < keyCount; i++)
            {
                var keyData = keyBuffer[i];
                var key     = (CONST_TV_KEY)keyBuffer[i].Key;
                var state   = keyData.Pressed == 1 ? TVButtonState.Pressed : keyData.Released == 1 ? TVButtonState.Released : TVButtonState.Up;

                keyStates.Remove(key);
                if (state != TVButtonState.Up)
                {
                    keyStates.Add(key, state);
                }
            }
        }