docs: def timerEvent(self, event):
          """
          Trigger the focus manager and work off all queued macros.
  
          The main purpose of using this timer event is to postpone
          updating the visual layout of Qtmacs until all macro code has
          been fully executed. Furthermore, this GUI update needs to
          happen in between any two macros.
  
          This method will trigger itself until all macros in the queue
          were executed.
  
          |Args|
  
          * ``event`` (**QTimerEvent**): Qt native event description.
  
          |Returns|
  
          * **None**
  
          |Raises|
  
          * **None**
          """
          self.killTimer(event.timerId())
  
          if event.timerId() == self._qteTimerRunMacro:
              # Declare the macro execution timer event handled.
              self._qteTimerRunMacro = None
  
              # If we are in this branch then the focus manager was just
              # executed, the event loop has updated all widgets and
              # cleared out all signals, and there is at least one macro
              # in the macro queue and/or at least one key to emulate
              # in the key queue. Execute the macros/keys and trigger
              # the focus manager after each. The macro queue is cleared
              # out first and the keys are only emulated if no more
              # macros are left.
              while True:
                  if len(self._qteMacroQueue) > 0:
                      (macroName, qteWidget, event) = self._qteMacroQueue.pop(0)
                      self._qteRunQueuedMacro(macroName, qteWidget, event)
                  elif len(self._qteKeyEmulationQueue) > 0:
                      # Determine the recipient of the event. This can
                      # be, in order of preference, the active widget in
                      # the active applet, or just the active applet (if
                      # it has no widget inside), or the active window
                      # (if no applets are available).
                      if self._qteActiveApplet is None:
                          receiver = self.qteActiveWindow()
                      else:
                          if self._qteActiveApplet._qteActiveWidget is None:
                              receiver = self._qteActiveApplet
                          else:
                              receiver = self._qteActiveApplet._qteActiveWidget
  
                      # Call the event filter directly and trigger the focus
                      # manager again.
                      keysequence = self._qteKeyEmulationQueue.pop(0)
                      self._qteEventFilter.eventFilter(receiver, keysequence)
                  else:
                      # If we are in this branch then no more macros are left
                      # to run. So trigger the focus manager one more time
                      # and then leave the while-loop.
                      self._qteFocusManager()
                      break
                  self._qteFocusManager()
          elif event.timerId() == self.debugTimer:
              #win = self.qteNextWindow()
              #self.qteMakeWindowActive(win)
              #self.debugTimer = self.startTimer(1000)
              pass
          else:
              # Should not happen.
              print('Unknown timer ID')
              pass