public bool HandleKeys(ScintillaControl sci, Keys key)
        {
            switch (key)
            {
            case Keys.Multiply:
            case Keys.Subtract:
            case Keys.Divide:
            case Keys.Decimal:
            case Keys.Add:
                return(false);

            case Keys.Up:
                if (!CompletionList.Active)
                {
                    sci.LineUp();
                }
                return(false);

            case Keys.Down:
                if (!CompletionList.Active)
                {
                    sci.LineDown();
                }
                return(false);

            case Keys.Up | Keys.Shift:
                sci.LineUpExtend();
                return(false);

            case Keys.Down | Keys.Shift:
                sci.LineDownExtend();
                return(false);

            case Keys.Left | Keys.Shift:
                sci.CharLeftExtend();
                return(false);

            case Keys.Right | Keys.Shift:
                sci.CharRightExtend();
                return(false);

            case Keys.Right:
                if (!CompletionList.Active)
                {
                    sci.CharRight();
                    currentPos = sci.CurrentPos;
                    if (sci.LineFromPosition(sci.CurrentPos) != currentLine)
                    {
                        Hide();
                    }
                    else if (OnUpdateCallTip != null)
                    {
                        OnUpdateCallTip(sci, currentPos);
                    }
                }
                return(true);

            case Keys.Left:
                if (!CompletionList.Active)
                {
                    sci.CharLeft();
                    currentPos = sci.CurrentPos;
                    if (currentPos < startPos)
                    {
                        Hide();
                    }
                    else
                    {
                        if (sci.LineFromPosition(sci.CurrentPos) != currentLine)
                        {
                            Hide();
                        }
                        else if (OnUpdateCallTip != null)
                        {
                            OnUpdateCallTip(sci, currentPos);
                        }
                    }
                }
                return(true);

            case Keys.Back:
                sci.DeleteBack();
                currentPos = sci.CurrentPos;
                if (currentPos + deltaPos < startPos)
                {
                    Hide();
                }
                else if (OnUpdateCallTip != null)
                {
                    OnUpdateCallTip(sci, currentPos);
                }
                return(true);

            case Keys.Tab:
            case Keys.Space:
                return(false);

            default:
                if (!CompletionList.Active)
                {
                    Hide();
                }
                return(false);
            }
        }