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.