public override bool HandleInput()
            {
                var handled = base.HandleInput();

                if (handled)
                {
                    return(true);
                }

                if (MyInput.Static.IsKeyPress(MyKeys.OemTilde))
                {
                    var info = m_members.Count > SelectedMember ? m_members[SelectedMember] : null;
                    if (MyInput.Static.IsNewKeyPressed(MyKeys.OemPeriod))
                    {
                        if (m_currentPath.Count > 0 && m_currentPath[m_currentPath.Count - 1] == info)
                        {
                            return(true);
                        }
                        var obj = info.GetValue(m_currentInstance);
                        if (obj != null && !obj.GetType().IsPrimitive&& obj.GetType().GetFields().Length + obj.GetType().GetProperties().Length > 0)
                        {
                            m_currentPath.Add(info);
                        }
                        m_counter = 0;
                        return(true);
                    }
                    else if (MyInput.Static.IsNewKeyPressed(MyKeys.OemComma))
                    {
                        if (m_currentPath.Count > 0)
                        {
                            m_currentPath.RemoveAt(m_currentPath.Count - 1);
                            m_counter = 0;
                        }
                        return(true);
                    }
                    else if (MyInput.Static.IsNewKeyPressed(MyKeys.OemQuestion))
                    {
                        if (m_showWatch)
                        {
                            if (!m_toPlot.Add(SelectedMember))
                            {
                                m_toPlot.Remove(SelectedMember);
                            }
                        }
                        else
                        {
                            MyListDictionary <MemberInfo, MemberInfo> watch = null;
                            if (!m_watch.TryGetValue(m_selectedType, out watch))
                            {
                                watch = m_watch[m_selectedType] = new MyListDictionary <MemberInfo, MemberInfo>();
                            }
                            var lst = watch.GetList(info);
                            if (lst != null)
                            {
                                watch.Remove(info);
                                return(true);
                            }
                            lst = watch.GetOrAddList(info);
                            lst.AddList(m_currentPath);
                            lst.Add(info);
                        }
                        return(true);
                    }
                    else if (MyInput.Static.IsNewKeyPressed(MyKeys.M))
                    {
                        m_showWatch = !m_showWatch;
                    }
                    else if (MyInput.Static.IsNewKeyPressed(MyKeys.OemPlus))
                    {
                        m_scale *= 2;
                    }
                    else if (MyInput.Static.IsNewKeyPressed(MyKeys.OemMinus))
                    {
                        m_scale /= 2;
                    }

                    m_counter += VRage.Input.MyInput.Static.PreviousMouseScrollWheelValue() - VRage.Input.MyInput.Static.MouseScrollWheelValue();
                    m_counter  = (long)MyMath.Clamp(m_counter, 0, m_members.Count / 0.002f);
                }

                return(handled);
            }