/* Generated by ./xlat/gen.sh from ./xlat/evdev_switch.in; do not edit. */

#ifdef IN_MPERS

# error static const struct xlat evdev_switch in mpers mode

#else

static
const struct xlat evdev_switch[] = {
#if defined(SW_LID) || (defined(HAVE_DECL_SW_LID) && HAVE_DECL_SW_LID)
  XLAT(SW_LID),
#endif
#if defined(SW_TABLET_MODE) || (defined(HAVE_DECL_SW_TABLET_MODE) && HAVE_DECL_SW_TABLET_MODE)
  XLAT(SW_TABLET_MODE),
#endif
#if defined(SW_HEADPHONE_INSERT) || (defined(HAVE_DECL_SW_HEADPHONE_INSERT) && HAVE_DECL_SW_HEADPHONE_INSERT)
  XLAT(SW_HEADPHONE_INSERT),
#endif
#if defined(SW_RFKILL_ALL) || (defined(HAVE_DECL_SW_RFKILL_ALL) && HAVE_DECL_SW_RFKILL_ALL)
  XLAT(SW_RFKILL_ALL),
#endif
#if defined(SW_RADIO) || (defined(HAVE_DECL_SW_RADIO) && HAVE_DECL_SW_RADIO)
  XLAT(SW_RADIO),
#endif
#if defined(SW_MICROPHONE_INSERT) || (defined(HAVE_DECL_SW_MICROPHONE_INSERT) && HAVE_DECL_SW_MICROPHONE_INSERT)
  XLAT(SW_MICROPHONE_INSERT),
#endif
#if defined(SW_DOCK) || (defined(HAVE_DECL_SW_DOCK) && HAVE_DECL_SW_DOCK)
  XLAT(SW_DOCK),
#endif
#if defined(SW_LINEOUT_INSERT) || (defined(HAVE_DECL_SW_LINEOUT_INSERT) && HAVE_DECL_SW_LINEOUT_INSERT)
  XLAT(SW_LINEOUT_INSERT),
#endif
#if defined(SW_JACK_PHYSICAL_INSERT) || (defined(HAVE_DECL_SW_JACK_PHYSICAL_INSERT) && HAVE_DECL_SW_JACK_PHYSICAL_INSERT)
  XLAT(SW_JACK_PHYSICAL_INSERT),
#endif
#if defined(SW_VIDEOOUT_INSERT) || (defined(HAVE_DECL_SW_VIDEOOUT_INSERT) && HAVE_DECL_SW_VIDEOOUT_INSERT)
  XLAT(SW_VIDEOOUT_INSERT),
#endif
#if defined(SW_CAMERA_LENS_COVER) || (defined(HAVE_DECL_SW_CAMERA_LENS_COVER) && HAVE_DECL_SW_CAMERA_LENS_COVER)
  XLAT(SW_CAMERA_LENS_COVER),
#endif
#if defined(SW_KEYPAD_SLIDE) || (defined(HAVE_DECL_SW_KEYPAD_SLIDE) && HAVE_DECL_SW_KEYPAD_SLIDE)
  XLAT(SW_KEYPAD_SLIDE),
#endif
#if defined(SW_FRONT_PROXIMITY) || (defined(HAVE_DECL_SW_FRONT_PROXIMITY) && HAVE_DECL_SW_FRONT_PROXIMITY)
  XLAT(SW_FRONT_PROXIMITY),
#endif
#if defined(SW_ROTATE_LOCK) || (defined(HAVE_DECL_SW_ROTATE_LOCK) && HAVE_DECL_SW_ROTATE_LOCK)
  XLAT(SW_ROTATE_LOCK),
#endif
#if defined(SW_LINEIN_INSERT) || (defined(HAVE_DECL_SW_LINEIN_INSERT) && HAVE_DECL_SW_LINEIN_INSERT)
  XLAT(SW_LINEIN_INSERT),
#endif
#if defined(SW_MUTE_DEVICE) || (defined(HAVE_DECL_SW_MUTE_DEVICE) && HAVE_DECL_SW_MUTE_DEVICE)
  XLAT(SW_MUTE_DEVICE),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
