code: def _proj_click(idx, fig, browse_backend):
      ssp_fig = fig.mne.fig_proj
      if browse_backend.name == "matplotlib":
          text_lab = ssp_fig.mne.proj_checkboxes.labels[idx]
          pos = np.mean(
              text_lab.get_tightbbox(
                  renderer=fig.canvas.get_renderer()
              ),
              axis=0,
          )
          fig._fake_click(
              pos,
              fig=ssp_fig,
              ax=ssp_fig.mne.proj_checkboxes.ax,
              xform="pix",
          )
      else:
          # _fake_click on QCheckBox is inconsistent across platforms
          # (also see comment in test_plot_raw_selection).
          ssp_fig._proj_changed(not fig.mne.projs_on[idx], idx)
          # Update Checkbox
          ssp_fig.checkboxes[idx].setChecked(
              bool(fig.mne.projs_on[idx])
          )
  
imports: import itertools
  import os
  from copy import deepcopy
  import matplotlib.pyplot
  import numpy
  import pytest
  from matplotlib import backend_bases
  from numpy.testing import assert_allclose
  from mne import Annotations, create_info, pick_types
  from mne._fiff.pick import _DATA_CH_TYPES_ORDER_DEFAULT, _PICK_TYPES_DATA_DICT
  from mne.annotations import _sync_onset
  from mne.datasets import testing
  from mne.io import RawArray
  from mne.utils import _assert_no_instances, _dt_to_stamp, _record_warnings, check_version, get_config, set_config
  from mne.viz import plot_raw, plot_sensors
  from mne.viz.utils import _fake_click, _fake_keypress
label_desc: Use image node_id 5 for calling a global function with example usage: _proj_click(idx, fig, browse_backend) without return types