Да. Можно.

---

Продолжаю тему связывания и отражения.
В общем, ничего сложного нет. Все это безобразие объявляется в Window_Selectable
У него его имеется хэш handler<символ, метод>.
При обновлении вызывается следующий метод:
Код:
def process_handling
    return unless open? && active
    return process_ok       if ok_enabled?        && Input.trigger?(:C)
    return process_cancel   if cancel_enabled?    && Input.trigger?(:B)
    return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
    return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
  end
Который поочереди проверяет нажата ли кнопка, сопоставлен ли метод с соответствующим дескриптором (handle), а возвращаемый метод вызывает такое вот чудовище:
Код:
def call_handler(symbol)
    @handler[symbol].call if handle?(symbol)
  end
Совершенно неясно - для чего дважды выполняется проверка на существование метода, и первой модификацией надо убрать if ok_enabled? и иже с ним из метода process_handling. Какая-никакая, а оптимизация, особенно если в каком-либо из дочерних классов будет задействована вся клавиатура.

Итог: сократился объем кода, программировать менюшки стало проще. Однако вырос уровень абстракции. Задействовано отражение. Это неминуемо негативно скажется на производительности. Однако, вероятно, в рамках проекта на мейкере, это падение будет незначительным. Тем не менее, если я за полчаса изучения скриптов уже нашел такой ляп, стоит основательно их прошерстить на предмет оптимизации.