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);
        }