void TextInputReceived(object sender, TextInputEventArgs args)
        {
            if (!initialized)
            {
                // ignore early events..
                return;
            }

            var keyEventData = new KeyEventData(KeyEventType.KeyTyped, currentTime, frame, currentFlags, args.Character);

            typedCharacters.Enqueue(keyEventData);
        }
        void RaiseEvents()
        {
            for (var i = 0; i < enumerableKeys.Length; i++)
            {
                var key = enumerableKeys[i];
                if (currentState.IsKeyDown(key) && previousState.IsKeyUp(key))
                {
                    var keyEventData = new KeyEventData(KeyEventType.KeyPressed, currentTime, frame, currentFlags, key);
                    eventSink.PushEvent(keyEventData);
                }

                if (currentState.IsKeyUp(key) && previousState.IsKeyDown(key))
                {
                    var keyEventData = new KeyEventData(KeyEventType.KeyReleased, currentTime, frame, currentFlags, key);
                    eventSink.PushEvent(keyEventData);
                }
            }
        }