Du könntest das Input-Modul direkt blockieren.
Code:
class << Input
  attr_acessor :blocked
  [:trigger?, :press?, :repeat?].each do |methode|
    # benenne die ursprüngliche Methode um
    new_name = :"#{methode}_unblocked"
    alias_method new_name, methode
    # definiere neue Methode mit altem Namen, die blocked abfragt
    define_method(methode) {|key|
      if blocked then false else send(new_name, key) end
    }
  end
  [:dir4, :dir8].each do |methode|
    new_name = :"#{methode}_unblocked"
    alias_method new_name, methode
    define_method(methode) {
      if blocked then 0 else send(new_name) end
    }
  end
end
Der Code ist ungetestet, aber theoretisch müsstest du damit per
Code:
Input.blocked = true
alle Standardeingaben blockieren können.