def start timeout=@default_timeout

      if not block_given?
        raise ArgumentError, 'expect to give a block'
      end

      @continue = true
      begin
        while @continue
          event = listen timeout
          next if not event

          yield event if event.type
        end
      ensure
        destroy
      end
    end
def start timeout=@default_timeout

      if not block_given?
        raise ArgumentError, 'expect to give a block'
      end

      @continue = true
      begin
        while @continue
          event = listen timeout
          next if not event

          yield event if event.type
        end
      ensure
        destroy
      end
    end
_name_ : a display name. if you give nil, EventListener use a Default Display
 _timeout_ : an intervel to check an interaction for the termination of the listening loop
 event listener loop

 ActiveWindowX::EventListener.new.start do |e|
   puts e.type, e.window.id
 end