public override bool HandlesKeyDown(Key key)
        {
            if (key == Key.Escape)
            {
                game.SetNewScreen(null);
            }
            else if (curWidget != null)
            {
                int        index   = Array.IndexOf <ButtonWidget>(buttons, curWidget);
                KeyBinding mapping = (KeyBinding)(index + (int)originKey);
                KeyMap     map     = game.InputHandler.Keys;
                Key        oldKey  = map[mapping];
                string     reason;

                if (!map.IsKeyOkay(oldKey, key, out reason))
                {
                    const string format = "&eFailed to change mapping \"{0}\". &c({1})";
                    statusWidget.SetText(String.Format(format, descriptions[index], reason));
                }
                else
                {
                    const string format = "&eChanged mapping \"{0}\" from &7{1} &eto &7{2}&e.";
                    statusWidget.SetText(String.Format(format, descriptions[index], oldKey, key));
                    string text = descriptions[index] + " : " + keyNames[(int)key];

                    curWidget.SetText(text);
                    map[mapping] = key;
                }
                curWidget = null;
            }
            return(key < Key.F1 || key > Key.F35);
        }