code: def parse_hotkey_combinations(hotkey):
      
      def combine_step(step):
          # A single step may be composed of many keys, and each key can have
          # multiple scan codes. To speed up hotkey matching and avoid introducing
          # event delays, we list all possible combinations of scan codes for these
          # keys. Hotkeys are usually small, and there are not many combinations, so
          # this is not as insane as it sounds.
          return (tuple(sorted(scan_codes)) for scan_codes in _itertools.product(*step))
  
      return tuple(tuple(combine_step(step)) for step in parse_hotkey(hotkey))
docs: Parses a user-provided hotkey. Differently from `parse_hotkey`,
      instead of each step being a list of the different scan codes for each key,
      each step is a list of all possible combinations of those scan codes.