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

#ifdef IN_MPERS

extern const struct xlat evdev_prop[];

#else

# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
# endif
const struct xlat evdev_prop[] = {
#if defined(INPUT_PROP_POINTER) || (defined(HAVE_DECL_INPUT_PROP_POINTER) && HAVE_DECL_INPUT_PROP_POINTER)
  XLAT(INPUT_PROP_POINTER),
#endif
#if defined(INPUT_PROP_DIRECT) || (defined(HAVE_DECL_INPUT_PROP_DIRECT) && HAVE_DECL_INPUT_PROP_DIRECT)
  XLAT(INPUT_PROP_DIRECT),
#endif
#if defined(INPUT_PROP_BUTTONPAD) || (defined(HAVE_DECL_INPUT_PROP_BUTTONPAD) && HAVE_DECL_INPUT_PROP_BUTTONPAD)
  XLAT(INPUT_PROP_BUTTONPAD),
#endif
#if defined(INPUT_PROP_SEMI_MT) || (defined(HAVE_DECL_INPUT_PROP_SEMI_MT) && HAVE_DECL_INPUT_PROP_SEMI_MT)
  XLAT(INPUT_PROP_SEMI_MT),
#endif
#if defined(INPUT_PROP_TOPBUTTONPAD) || (defined(HAVE_DECL_INPUT_PROP_TOPBUTTONPAD) && HAVE_DECL_INPUT_PROP_TOPBUTTONPAD)
  XLAT(INPUT_PROP_TOPBUTTONPAD),
#endif
#if defined(INPUT_PROP_POINTING_STICK) || (defined(HAVE_DECL_INPUT_PROP_POINTING_STICK) && HAVE_DECL_INPUT_PROP_POINTING_STICK)
  XLAT(INPUT_PROP_POINTING_STICK),
#endif
#if defined(INPUT_PROP_ACCELEROMETER) || (defined(HAVE_DECL_INPUT_PROP_ACCELEROMETER) && HAVE_DECL_INPUT_PROP_ACCELEROMETER)
  XLAT(INPUT_PROP_ACCELEROMETER),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
