protected void HandleKeyboard() { Event evt = Event.current; if (evt.GetTypeForControl(m_ControlID) != EventType.KeyDown || m_ControlID != GUIUtility.keyboardControl) { return; } if (m_MemorySelection.Selected == null) { return; } int count; switch (evt.keyCode) { case KeyCode.UpArrow: m_MemorySelection.MoveUp(); break; case KeyCode.DownArrow: m_MemorySelection.MoveDown(); break; case KeyCode.Home: m_MemorySelection.MoveFirst(); break; case KeyCode.End: m_MemorySelection.MoveLast(); break; case KeyCode.LeftArrow: if (m_MemorySelection.Selected.expanded) { m_MemorySelection.Selected.expanded = false; } else { m_MemorySelection.MoveParent(); } break; case KeyCode.RightArrow: if (m_MemorySelection.Selected.ChildCount() > 0) { m_MemorySelection.Selected.expanded = true; } break; case KeyCode.PageUp: count = Mathf.RoundToInt(m_VisibleHeight / kRowHeight); for (int i = 0; i < count; i++) { m_MemorySelection.MoveUp(); } break; case KeyCode.PageDown: count = Mathf.RoundToInt(m_VisibleHeight / kRowHeight); for (int i = 0; i < count; i++) { m_MemorySelection.MoveDown(); } break; case KeyCode.Return: if (m_MemorySelection.Selected.memoryInfo != null) { Selection.instanceIDs = new int[0]; Selection.activeInstanceID = m_MemorySelection.Selected.memoryInfo.instanceId; } break; default: return; } RowClicked(evt, m_MemorySelection.Selected); EnsureVisible(); m_ProfilerWindow.Repaint(); }