def no_response_to(types = nil, state = :both, opts = nil)
      logger.debug "removing response to #{types.inspect} for state #{state.inspect}"
      types = Array(types)
      Array(state == :both ? %w(down up) : state).each do |state|
        types.each do |type|
          combined_types(type, opts).each do |combined_type|
            responses[combined_type][state.to_sym].clear
          end
        end
      end
      nil
    end
def no_response_to(types = nil, state = :both, opts = nil)
      logger.debug "removing response to #{types.inspect} for state #{state.inspect}"
      types = Array(types)
      Array(state == :both ? %w(down up) : state).each do |state|
        types.each do |type|
          combined_types(type, opts).each do |combined_type|
            responses[combined_type][state.to_sym].clear
          end
        end
      end
      nil
    end
Deregisters all responses to one or more actions.

 Parameters (see Launchpad for values):

 [+types+] one or an array of button types to respond to,
           additional value <tt>:all</tt> for actions on all buttons
           (but not meaning "all responses"),
           optional, defaults to +nil+, meaning "all responses"
 [+state+] button state to respond to,
           additional value <tt>:both</tt>

 Optional options hash:

 [<tt>:x</tt>] x coordinate(s), can contain arrays and ranges, when specified
               without y coordinate, it's interpreted as a whole column
 [<tt>:y</tt>] y coordinate(s), can contain arrays and ranges, when specified
               without x coordinate, it's interpreted as a whole row