public override bool HandlesKeyDown(Key key) { if (key == Key.Escape) { game.Gui.SetNewScreen(null); } else if (curWidget != null) { int index = Array.IndexOf <Widget>(widgets, curWidget) - 2; KeyBind mapping = Get(index, left, right); KeyMap map = game.InputHandler.Keys; Key oldKey = map[mapping]; string reason; string desc = Get(index, leftDesc, rightDesc); if (!map.IsKeyOkay(oldKey, key, out reason)) { const string format = "&eFailed to change \"{0}\". &c({1})"; statusWidget.SetText(String.Format(format, desc, reason)); } else { const string format = "&e\"{0}\" changed from &7{1} &eto &7{2}&e."; statusWidget.SetText(String.Format(format, desc, oldKey, key)); string text = desc + ": " + keyNames[(int)key]; curWidget.SetText(text); map[mapping] = key; } curWidget = null; } return(key < Key.F1 || key > Key.F35); }