System.Action.Invoke(char)

Here are the examples of the csharp api System.Action.Invoke(char) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

22 Examples 7

19 Source : CustomUIKeyboard.cs
with MIT License
from andruzzzhka

public void Awake()
        {
            _keyButtonPrefab = Resources.FindObjectsOfTypeAll<TextMeshProButton>().First(x => x.name == "KeyboardButton");

            string[] array = new string[]
            {
                "q",
                "w",
                "e",
                "r",
                "t",
                "y",
                "u",
                "i",
                "o",
                "p",
                "a",
                "s",
                "d",
                "f",
                "g",
                "h",
                "j",
                "k",
                "l",
                "z",
                "x",
                "c",
                "v",
                "b",
                "n",
                "m",
                "<-",
                "space",
                "OK",
                "Cancel"
            };

            for (int i = 0; i < array.Length; i++)
            {
                RectTransform parent = transform.GetChild(i) as RectTransform;
                //TextMeshProButton textMeshProButton = Instantiate(_keyButtonPrefab, parent);
                TextMeshProButton textMeshProButton = parent.GetComponentInChildren<TextMeshProButton>();
                textMeshProButton.text.text = array[i];
                RectTransform rectTransform = textMeshProButton.transform as RectTransform;
                rectTransform.localPosition = Vector2.zero;
                rectTransform.localScale = Vector3.one;
                rectTransform.ancreplaceddPosition = Vector2.zero;
                rectTransform.anchorMin = Vector2.zero;
                rectTransform.anchorMax = Vector3.one;
                rectTransform.offsetMin = Vector2.zero;
                rectTransform.offsetMax = Vector2.zero;
                Navigation navigation = textMeshProButton.button.navigation;
                navigation.mode = Navigation.Mode.None;
                textMeshProButton.button.navigation = navigation;
                textMeshProButton.button.onClick.RemoveAllListeners();
                if (i < array.Length - 4)
                {
                    string key = array[i];
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                            textKeyWasPressedEvent?.Invoke(key[0]);
                    });
                }
                else if (i == array.Length - 4)
                {
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        deleteButtonWasPressedEvent?.Invoke();
                    });
                }
                else if (i == array.Length - 1)
                {
                    (textMeshProButton.transform as RectTransform).sizeDelta = new Vector2(7f, 1.5f);
                    _cancelButton = textMeshProButton.button;
                    _cancelButton.gameObject.SetActive(!HideCancelButton);
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        cancelButtonWasPressedEvent?.Invoke();
                    });
                }
                else if (i == array.Length - 2)
                {
                    _okButton = textMeshProButton.button;
                    _okButton.interactable = OkButtonInteractivity;
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        okButtonWasPressedEvent?.Invoke();
                    });
                }
                else
                {
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        textKeyWasPressedEvent?.Invoke(' ');
                    });
                }
            }

            name = "CustomUIKeyboard";

            (transform as RectTransform).ancreplaceddPosition -= new Vector2(0f, 0f);

            for (int i = 1; i <= 10; i++)
            {
                TextMeshProButton textButton = Instantiate(_keyButtonPrefab);
                textButton.text.text = (i % 10).ToString();

                string key = (i % 10).ToString();
                textButton.button.onClick.AddListener(delegate ()
                {
                    textKeyWasPressedEvent?.Invoke(key[0]);
                });

                RectTransform buttonRect = textButton.GetComponent<RectTransform>();
                RectTransform component2 = transform.GetChild(i - 1).gameObject.GetComponent<RectTransform>();

                RectTransform buttonHolder = Instantiate(component2, component2.parent, false);
                Destroy(buttonHolder.GetComponentInChildren<Button>().gameObject);

                buttonHolder.ancreplaceddPosition -= new Vector2(0f, -10.5f);

                buttonRect.SetParent(buttonHolder, false);

                buttonRect.localPosition = Vector2.zero;
                buttonRect.localScale = Vector3.one;
                buttonRect.ancreplaceddPosition = Vector2.zero;
                buttonRect.anchorMin = Vector2.zero;
                buttonRect.anchorMax = Vector3.one;
                buttonRect.offsetMin = Vector2.zero;
                buttonRect.offsetMax = Vector2.zero;
            }

        }

19 Source : StreamReplacement.cs
with MIT License
from chillersanim

public void Flush()
        {
            foreach (var c in buffer)
            {
                output(c);
            }

            buffer.Clear();
            maskPosition = 0;
        }

19 Source : StreamReplacement.cs
with MIT License
from chillersanim

private void AddUnverifiedCharacter(char c)
        {
            buffer.Add(c);
            maskPosition++;

            if (maskPosition == mask.Length)
            {
                buffer.Clear();
                maskPosition = 0;

                foreach (var repChar in replacement)
                {
                    output(repChar);
                }
            }
        }

19 Source : StreamReplacement.cs
with MIT License
from chillersanim

private void WritePartOfBuffer(int count)
        {
            for (var i = 0; i < count; i++)
            {
                output(buffer[i]);
            }
        }

19 Source : SearchKeyboard.cs
with MIT License
from chrislee0419

protected void InvokeTextButtonPressed(char c) => TextButtonPressed?.Invoke(c);

19 Source : SearchKeyboardManager.cs
with MIT License
from chrislee0419

protected virtual void Awake()
        {
            // NOTE: this should be called after initializing the components in the derived clreplaced's overridden Awake
            if (_predictionBar != null)
            {
                _predictionBar.PredictionPressed += delegate (string query, SuggestionType type)
                {
                    _searchText = query;
                    _textDisplayComponent.text = _searchText.ToUpper() + CursorText;

                    _predictionBar.ClearAndSetPredictionButtons(_searchText);

                    PredictionPressed?.Invoke(query, type);
                };
            }

            if (_keyboard != null)
            {
                _keyboard.TextButtonPressed += delegate (char key)
                {
                    _searchText += key.ToString();
                    SetDisplayedText(_searchText);

                    _predictionBar.ClearAndSetPredictionButtons(_searchText);

                    TextKeyPressed?.Invoke(key);
                };
                _keyboard.DeleteButtonPressed += delegate
                {
                    if (_searchText.Length > 0)
                        _searchText = _searchText.Substring(0, _searchText.Length - 1);

                    SetDisplayedText(_searchText);
                    _predictionBar.ClearAndSetPredictionButtons(_searchText);

                    DeleteButtonPressed?.Invoke();
                };
                _keyboard.ClearButtonPressed += delegate
                {
                    _searchText = "";
                    _textDisplayComponent.text = PlaceholderText;

                    _predictionBar.ClearAndSetPredictionButtons(_searchText);

                    ClearButtonPressed?.Invoke();
                };
                _keyboard.FilterButtonPressed += () => FilterButtonPressed?.Invoke();
            }
        }

19 Source : SearchKeyboardManager.cs
with MIT License
from chrislee0419

protected void InvokeTextKeyPressed(char c) => TextKeyPressed?.Invoke(c);

19 Source : DefaultOutputWriter.cs
with MIT License
from DynamicsValue

private void AppendIndent()
        {
            for (int i = 0; i < this.currentIndent.Length; i++)
            {
                this.output.Invoke(this.currentIndent[i]);
            }
        }

19 Source : DefaultOutputWriter.cs
with MIT License
from DynamicsValue

public override void Write(char c)
            {
                if (!c.Equals('\r') && !c.Equals('\n'))
                {
                    this.Writer.writerState = new DefaultWriterState(this.Writer);
                    this.Writer.AppendIndent();
                }

                this.Writer.output.Invoke(c);
            }

19 Source : DefaultOutputWriter.cs
with MIT License
from DynamicsValue

public override void Write(char c)
            {
                if (c.Equals('\r') || c.Equals('\n'))
                {
                    this.Writer.writerState = new IndentNextNonNewLineCharacterWriterState(this.Writer);
                    this.Writer.writerState.Write(c);
                }
                else
                {
                    this.Writer.output.Invoke(c);
                }
            }

19 Source : JsonString.cs
with BSD 2-Clause "Simplified" License
from emilianavt

public static int Unescape(string src, IStore w)
        {
            int writeCount = 0;
            Action<Char> Write = c =>
            {
                if (w != null)
                {
                    w.Write(c);
                }
                ++writeCount;
            };

            int i = 0;
            int length = src.Length - 1;
            while (i < length)
            {
                if (src[i] == '\\')
                {
                    var c = src[i + 1];
                    switch (c)
                    {
                        case '\\':
                        case '/':
                        case '"':
                            // remove prefix
                            Write(c);
                            i += 2;
                            continue;

                        case 'b':
                            Write('\b');
                            i += 2;
                            continue;
                        case 'f':
                            Write('\f');
                            i += 2;
                            continue;
                        case 'n':
                            Write('\n');
                            i += 2;
                            continue;
                        case 'r':
                            Write('\r');
                            i += 2;
                            continue;
                        case 't':
                            Write('\t');
                            i += 2;
                            continue;
                    }
                }

                Write(src[i]);
                i += 1;
            }
            while (i <= length)
            {
                Write(src[i++]);
            }

            return writeCount;
        }

19 Source : TextInput.cs
with MIT License
from EverestAPI

internal static void ReceiveTextInput(char c) {
            // Invoke our own event handler.
            OnInput?.Invoke(c);
        }

19 Source : CharSerializer.cs
with GNU General Public License v3.0
from janfokke

public override void Read(ExtendedBinaryReader reader, Action<char> synchronizationCallback)
        {
            synchronizationCallback(reader.ReadChar());
        }

19 Source : Program.cs
with Apache License 2.0
from JetBrains

private static void MainLifetime(string[] args, LifetimeDefinition lifetimeDefinition)
    {
      var lifetime = lifetimeDefinition.Lifetime;

      var reflectionSerializers = new ReflectionSerializersFacade();
      var serializers = new Serializers(TaskScheduler.Default, reflectionSerializers.Registrar);

      var scheduler = SingleThreadScheduler.RunOnSeparateThread(lifetime, "Scheduler");
      Protocol protocol;
      SocketWire.Base wire;


      var isServer = args.Length == 0 ? Util.Fork(args) : args[0] == "server";
      if (isServer)
      {
        Console.replacedle = "Server";
        wire = new SocketWire.Server(lifetime, scheduler, ourIpEndPoint);
        protocol = new Protocol("Server", serializers, new Idenreplacedies(IdKind.Server), scheduler, wire, lifetime);
      }
      else
      {
        Console.replacedle = "Client";
        wire = new SocketWire.Client(lifetime, scheduler, ourIpEndPoint);
        protocol = new Protocol("Client", serializers, new Idenreplacedies(IdKind.Client), scheduler, wire, lifetime);
      }

      scheduler.Queue(() => RunApplication(isServer, reflectionSerializers, lifetime, protocol));

      wire.Connected.Change.Advise(lifetime, value =>
      {
        if (value)
        {
          Console.replacedle += ": connected";
        }
        else
        {
          lifetimeDefinition.Terminate();
        }
      });

      while (lifetime.IsAlive)
      {
        if (Console.KeyAvailable && OnChar != null)
          scheduler.Queue(() => OnChar?.Invoke(Console.ReadKey(true).KeyChar));

        Thread.Sleep(100);
      }
    }

19 Source : DefaultCryptographicImplementation.cs
with MIT License
from microsoft

private void GenerateCryptographicallyRandomCharacters(Action<char> characterOutputAction, int numChars)
        {
            // https://cmvandrevala.wordpress.com/2016/09/24/modulo-bias-when-generating-random-numbers/
            var chars = CHARS_ALPHANUMERIC_ONLY;
            byte[] data = new byte[4 * numChars];
            using (RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
            {
                crypto.GetBytes(data);
            }

            for (int i = 0; i < numChars; i++)
            {
                int randomNumber = BitConverter.ToInt32(data, i * 4);
                if (randomNumber < 0) randomNumber *= -1;
                characterOutputAction(chars[randomNumber % chars.Length]);
            }
        }

19 Source : FifFile.cs
with MIT License
from nickworonekin

public void Save(string path)
        {
            using (var destination = new FileStream(path, FileMode.Create, FileAccess.Write))
            using (var writer = new BinaryWriter(destination, Encoding.Unicode))
            {
                writer.Write(new byte[] { (byte)'F', (byte)'O', (byte)'N', (byte)'T', (byte)'D', (byte)'A', (byte)'T', (byte)'F' });

                Action<char> WriteChar;
                Action<short> WriteInt16;
                Action<int> WriteInt32;

                if (IsBigEndian)
                {
                    WriteChar = value => writer.Write((char)BinaryPrimitives.ReverseEndianness(value));
                    WriteInt16 = value => writer.Write(BinaryPrimitives.ReverseEndianness(value));
                    WriteInt32 = value => writer.Write(BinaryPrimitives.ReverseEndianness(value));

                    writer.Write(1);
                }
                else
                {
                    WriteChar = writer.Write;
                    WriteInt16 = writer.Write;
                    WriteInt32 = writer.Write;

                    writer.Write(0);
                }

                WriteInt16(101);
                WriteInt16(56);
                WriteInt32(Entries.Count);
                WriteInt32(CharactersPerTexture);
                WriteInt16(TextureCount);
                WriteInt16(Width);
                WriteInt16(Height);
                WriteInt16(LastWidth);
                WriteInt16(LastHeight);
                WriteInt16(CharactersPerRow);
                WriteInt16(RowCount);
                WriteInt16(CharacterWidth);
                WriteInt16(CharacterHeight);
                WriteInt16(ColumnWidth);
                WriteInt16(RowHeight);
                WriteInt16(CharacterHeight);
                writer.Write(288L); // Cheat and write this value out as a long

                short index = 0;
                foreach (var entry in Entries)
                {
                    WriteInt32(entry.Value.Left);
                    WriteInt32(entry.Value.Right);
                    WriteInt32(entry.Value.Spacing);
                    WriteChar(entry.Key);
                    WriteInt16(index);

                    index++;
                }
            }
        }

19 Source : CustomUIKeyboard.cs
with MIT License
from rolopogo

public void Awake()
        {
            _keyButtonPrefab = Resources.FindObjectsOfTypeAll<TextMeshProButton>().First(x => x.name == "KeyboardButton");
            
            string[] array = new string[]
            {
                "q",
                "w",
                "e",
                "r",
                "t",
                "y",
                "u",
                "i",
                "o",
                "p",
                "a",
                "s",
                "d",
                "f",
                "g",
                "h",
                "j",
                "k",
                "l",
                "z",
                "x",
                "c",
                "v",
                "b",
                "n",
                "m",
                "<-",
                "space",
                "OK",
                "Cancel"
            };

            for (int i = 0; i < array.Length; i++)
            {
                RectTransform parent = transform.GetChild(i) as RectTransform;
                //TextMeshProButton textMeshProButton = Instantiate(_keyButtonPrefab, parent);
                TextMeshProButton textMeshProButton = parent.GetComponentInChildren<TextMeshProButton>();
                textMeshProButton.text.text = array[i];
                RectTransform rectTransform = textMeshProButton.transform as RectTransform;
                rectTransform.localPosition = Vector2.zero;
                rectTransform.localScale = Vector3.one;
                rectTransform.ancreplaceddPosition = Vector2.zero;
                rectTransform.anchorMin = Vector2.zero;
                rectTransform.anchorMax = Vector3.one;
                rectTransform.offsetMin = Vector2.zero;
                rectTransform.offsetMax = Vector2.zero;
                Navigation navigation = textMeshProButton.button.navigation;
                navigation.mode = Navigation.Mode.None;
                textMeshProButton.button.navigation = navigation;
                textMeshProButton.button.onClick.RemoveAllListeners();
                if (i < array.Length - 4)
                {
                    string key = array[i];
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                            textKeyWasPressedEvent?.Invoke(key[0]);
                    });
                }
                else if (i == array.Length - 4)
                {
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        deleteButtonWasPressedEvent?.Invoke();
                    });
                }
                else if (i == array.Length - 1)
                {
                    (textMeshProButton.transform as RectTransform).sizeDelta = new Vector2(7f, 1.5f);
                    _cancelButton = textMeshProButton.button;
                    _cancelButton.gameObject.SetActive(!HideCancelButton);
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        cancelButtonWasPressedEvent?.Invoke();
                    });
                }
                else if (i == array.Length - 2)
                {
                    _okButton = textMeshProButton.button;
                    _okButton.interactable = OkButtonInteractivity;
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        okButtonWasPressedEvent?.Invoke();
                    });
                }
                else
                {
                    textMeshProButton.button.onClick.AddListener(delegate ()
                    {
                        textKeyWasPressedEvent?.Invoke(' ');
                    });
                }
            }

            name = "CustomUIKeyboard";

            (transform as RectTransform).ancreplaceddPosition -= new Vector2(0f, 0f);

            for (int i = 1; i <= 10; i++)
            {
                TextMeshProButton textButton = Instantiate(_keyButtonPrefab);
                textButton.text.text = i.ToString().Last().ToString();

                string key = i.ToString().Last().ToString();
                textButton.button.onClick.AddListener(delegate ()
                {
                    textKeyWasPressedEvent?.Invoke(key[0]);
                });

                RectTransform buttonRect = textButton.GetComponent<RectTransform>();
                RectTransform component2 = transform.GetChild(i - 1).gameObject.GetComponent<RectTransform>();

                RectTransform buttonHolder = Instantiate(component2, component2.parent, false);
                Destroy(buttonHolder.GetComponentInChildren<Button>().gameObject);

                buttonHolder.ancreplaceddPosition -= new Vector2(0f, -10.5f);

                buttonRect.SetParent(buttonHolder, false);

                buttonRect.localPosition = Vector2.zero;
                buttonRect.localScale = Vector3.one;
                buttonRect.ancreplaceddPosition = Vector2.zero;
                buttonRect.anchorMin = Vector2.zero;
                buttonRect.anchorMax = Vector3.one;
                buttonRect.offsetMin = Vector2.zero;
                buttonRect.offsetMax = Vector2.zero;
            }

        }

19 Source : KeyboardListenerService.cs
with GNU General Public License v3.0
from Sergio0694

private void Content_CharacterReceived(UIElement sender, CharacterReceivedRoutedEventArgs args)
        {
            CharacterReceived?.Invoke(args.Character);
        }

19 Source : InputModule.cs
with MIT License
from tortuga-foundation

private static unsafe void ProcessTextInputEvent(SDL_TextInputEvent ev)
        {
            uint byteCount = 0;
            // Loop until the null terminator is found or the max size is reached.
            while (byteCount < SDL_TextInputEvent.MaxTextSize && ev.text[byteCount++] != 0) { }

            if (byteCount > 1)
            {
                // We don't want the null terminator.
                byteCount -= 1;
                int charCount = Encoding.UTF8.GetCharCount(ev.text, (int)byteCount);
                char* charsPtr = stackalloc char[charCount];
                Encoding.UTF8.GetChars(ev.text, (int)byteCount, charsPtr, charCount);
                for (int i = 0; i < charCount; i++)
                    OnTextInput?.Invoke(charsPtr[i]);
            }
        }

19 Source : JsonString.cs
with MIT License
from vrm-c

public static int Unescape(string src, IStore w)
        {
            int writeCount = 0;
            Action<Char> Write = c =>
            {
                if (w != null)
                {
                    w.Write(c);
                }
                ++writeCount;
            };

            int i = 0;
            int length = src.Length - 1;
            while (i < length)
            {
                if (src[i] == '\\')
                {
                    var c = src[i + 1];
                    switch (c)
                    {
                        case '\\':
                        case '/':
                        case '"':
                            // remove prefix
                            Write(c);
                            i += 2;
                            continue;

                        case 'b':
                            Write('\b');
                            i += 2;
                            continue;
                        case 'f':
                            Write('\f');
                            i += 2;
                            continue;
                        case 'n':
                            Write('\n');
                            i += 2;
                            continue;
                        case 'r':
                            Write('\r');
                            i += 2;
                            continue;
                        case 't':
                            Write('\t');
                            i += 2;
                            continue;
                        case 'u':
                            {
                                var u0 = CheckHex(src[i + 2]);
                                var u1 = CheckHex(src[i + 3]);
                                var u2 = CheckHex(src[i + 4]);
                                var u3 = CheckHex(src[i + 5]);
                                var u = (u0 << 12) + (u1 << 8) + (u2 << 4) + u3;
                                Write((char)u);
                                i += 6;
                            }
                            continue;
                    }
                }

                Write(src[i]);
                i += 1;
            }
            while (i <= length)
            {
                Write(src[i++]);
            }

            return writeCount;
        }

19 Source : Keyboard.cs
with Apache License 2.0
from wdlindmeier

public override bool ProcessEventIntoState(InputEvent inputEvent, InputState intoState)
        {
            var keyEvent = inputEvent as KeyEvent;
            if (keyEvent != null)
            {
                var control = intoState.controls[(int)keyEvent.key] as ButtonControl;
                if (!control.enabled)
                    return false;

                control.SetValueFromEvent(keyEvent.isDown ? 1 : 0);
                return true;
            }

            var textEvent = inputEvent as TextEvent;
            if (textEvent != null)
            {
                if (onCharacterReceived != null)
                    onCharacterReceived(textEvent.text);
                return true;
            }

            return base.ProcessEventIntoState(inputEvent, intoState);
        }

19 Source : ConsoleHelper.cs
with MIT License
from ZacharyPatten

internal static void HiddenReadLineBase(
			char shownCharacter,
			Func<int> GetLength,
			Action<char> Append,
			Action<int, char> InsertAt,
			Action<int> RemoveAt,
			Action<int, int>? RemoveRange = null,
			Action? Clear = null)
		{
			int position = 0;

			RemoveRange ??= (index, length) =>
			{
				for (int i = 0; i < length; i++)
				{
					RemoveAt(index);
				}
			};

			Clear ??= () => RemoveRange(0, GetLength());

			void MoveToOrigin() => MoveNegative(position);

			void MoveToTail() => MovePositive(GetLength() - position);

			while (true)
			{
				ConsoleKeyInfo keyInfo = Console.ReadKey(true);
				if (keyInfo.Key is ConsoleKey.Enter)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						MovePositive(GetLength() - position);
						Console.WriteLine();
						break;
					}
				}
				else if (keyInfo.Key is ConsoleKey.Backspace)
				{
					if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
					{
						MoveToOrigin();
						ConsoleWriteString(new string(shownCharacter, GetLength() - position) + new string(' ', position));
						MoveNegative(GetLength());
						RemoveRange(0, position);
						position = 0;
					}
					else if (position > 0)
					{
						if (position == GetLength())
						{
							MoveNegative(1);
							ConsoleWriteChar(' ');
							MoveNegative(1);
						}
						else
						{
							MoveToTail();
							MoveNegative(1);
							ConsoleWriteChar(' ');
							MoveNegative(GetLength() - position + 1);
						}
						RemoveAt(position - 1);
						position--;
					}
				}
				else if (keyInfo.Key is ConsoleKey.Delete)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						if (position < GetLength())
						{
							int left = Console.CursorLeft;
							int top = Console.CursorTop;
							MoveToTail();
							MoveNegative(1);
							ConsoleWriteChar(' ');
							Console.CursorLeft = left;
							Console.CursorTop = top;
							RemoveAt(position);
							continue;
						}
					}
				}
				else if (keyInfo.Key is ConsoleKey.Escape)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						MoveToOrigin();
						int left = Console.CursorLeft;
						int top = Console.CursorTop;
						ConsoleWriteString(new string(' ', GetLength()));
						Console.CursorLeft = left;
						Console.CursorTop = top;
						Clear();
						position = 0;
					}
				}
				else if (keyInfo.Key is ConsoleKey.Home)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
						{
							MoveToOrigin();
							ConsoleWriteString(new string(shownCharacter, GetLength() - position) + new string(' ', position));
							MoveNegative(GetLength());
							RemoveRange(0, position);
							position = 0;
						}
						else
						{
							MoveToOrigin();
							position = 0;
						}
					}
				}
				else if (keyInfo.Key is ConsoleKey.End)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
						{
							MoveToOrigin();
							ConsoleWriteString(new string(shownCharacter, position) + new string(' ', GetLength() - position));
							MoveNegative(GetLength() - position);
							RemoveRange(position, GetLength() - position);
						}
						else
						{
							MoveToTail();
							position = GetLength();
						}
					}
				}
				else if (keyInfo.Key is ConsoleKey.LeftArrow)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
						{
							MoveToOrigin();
							position = 0;
						}
						else
						{
							if (position > 0)
							{
								MoveNegative(1);
								position--;
							}
						}
					}
				}
				else if (keyInfo.Key is ConsoleKey.RightArrow)
				{
					if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
						!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
					{
						if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
						{
							MoveToTail();
							position = GetLength();
						}
						else
						{
							if (position < GetLength())
							{
								MovePositive(1);
								position++;
							}
						}
					}
				}
				else
				{
					if (!(keyInfo.KeyChar is '\0'))
					{
						if (position == GetLength())
						{
							ConsoleWriteChar(shownCharacter);
							Append(keyInfo.KeyChar);
							position++;
						}
						else
						{
							int left = Console.CursorLeft;
							int top = Console.CursorTop;
							MoveToTail();
							ConsoleWriteChar(shownCharacter);
							Console.CursorLeft = left;
							Console.CursorTop = top;
							MovePositive(1);
							InsertAt(position, keyInfo.KeyChar);
							position++;
						}
					}
				}
			}
		}