code: def parse_hotkey(hotkey):
      
      if _is_number(hotkey) or len(hotkey) == 1:
          scan_codes = key_to_scan_codes(hotkey)
          step = (scan_codes,)
          steps = (step,)
          return steps
      elif _is_list(hotkey):
          if not any(map(_is_list, hotkey)):
              step = tuple(key_to_scan_codes(k) for k in hotkey)
              steps = (step,)
              return steps
          return hotkey
  
      steps = []
      for step in _re.split(r',\s?', hotkey):
          keys = _re.split(r'\s?\+\s?', step)
          steps.append(tuple(key_to_scan_codes(key) for key in keys))
      return tuple(steps)
docs: Parses a user-provided hotkey into nested tuples representing the
      parsed structure, with the bottom values being lists of scan codes.
      Also accepts raw scan codes, which are then wrapped in the required
      number of nestings.
  
      Example:
  
          parse_hotkey("alt+shift+a, alt+b, c")
          #    Keys:    ^~^ ^~~~^ ^  ^~^ ^  ^
          #    Steps:   ^~~~~~~~~~^  ^~~~^  ^
  
          # ((alt_codes, shift_codes, a_codes), (alt_codes, b_codes), (c_codes,))