private Boolean NeedReturn(KeyboardKeys key)
        {
            var lastInput = _inputList.LastOrDefault();

            if (this.KeyboardType == KeyboardTypes.Number)
            {
                return(key == KeyboardKeys.O_Substract && lastInput != null);
            }

            if ((lastInput == null || lastInput.IsFunction || lastInput.IsLeftBracket) &&
                ((KeyboardHelper.IsOperatorKey(key) && key != KeyboardKeys.O_Substract) || KeyboardHelper.IsConfirmKey(key) || KeyboardHelper.IsRightBracketKey(key) || KeyboardHelper.IsUnitConverterKey(key)))
            {
                return(true);
            }

            if (lastInput != null)
            {
                // last minus? × : Overwrite
                if (KeyboardHelper.IsOperatorKey(key) && IsLastInputAMinusSign(lastInput)) // return if last input is a minus sign
                {
                    return(true);
                }

                if (lastInput.IsOperator && (KeyboardHelper.IsConfirmKey(key) || KeyboardHelper.IsRightBracketKey(key) || KeyboardHelper.IsUnitConverterKey(key)))
                {
                    return(true);
                }
                if (lastInput.IsUnitConverter && (KeyboardHelper.IsRightBracketKey(key) || KeyboardHelper.IsUnitConverterKey(key)))
                {
                    return(true);
                }

                // already have? × : √
                if ((lastInput.IsPoint || GetLastNumericText(this.InputValue).Contains(".")) && KeyboardHelper.IsPointKey(key))
                {
                    return(true);
                }

                // completed? × : √
                if ((lastInput.IsDigit || lastInput.IsPoint || lastInput.IsRightBracket || lastInput.IsPI) && KeyboardHelper.IsRightBracketKey(key))
                {
                    var leftBracketCount  = Helpers.GetCount(this.InputValue, @"[([{]");
                    var rightBracketCount = Helpers.GetCount(this.InputValue, @"[)\]}]");
                    if (leftBracketCount <= rightBracketCount)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        private Boolean NeedAddRightBrackets(KeyboardKeys key)
        {
            var lastInput = _inputList.LastOrDefault();

            return(lastInput != null && (lastInput.IsDigit || lastInput.IsPoint || lastInput.IsRightBracket || lastInput.IsPI) && (KeyboardHelper.IsConfirmKey(key) || KeyboardHelper.IsUnitConverterKey(key)));
        }