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

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(EV_SYN) || (defined(HAVE_DECL_EV_SYN) && HAVE_DECL_EV_SYN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_SYN) == (0x00), "EV_SYN != 0x00");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_SYN 0x00
#endif
#if defined(EV_KEY) || (defined(HAVE_DECL_EV_KEY) && HAVE_DECL_EV_KEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_KEY) == (0x01), "EV_KEY != 0x01");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_KEY 0x01
#endif
#if defined(EV_REL) || (defined(HAVE_DECL_EV_REL) && HAVE_DECL_EV_REL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_REL) == (0x02), "EV_REL != 0x02");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_REL 0x02
#endif
#if defined(EV_ABS) || (defined(HAVE_DECL_EV_ABS) && HAVE_DECL_EV_ABS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_ABS) == (0x03), "EV_ABS != 0x03");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_ABS 0x03
#endif
#if defined(EV_MSC) || (defined(HAVE_DECL_EV_MSC) && HAVE_DECL_EV_MSC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_MSC) == (0x04), "EV_MSC != 0x04");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_MSC 0x04
#endif
#if defined(EV_SW) || (defined(HAVE_DECL_EV_SW) && HAVE_DECL_EV_SW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_SW) == (0x05), "EV_SW != 0x05");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_SW 0x05
#endif
#if defined(EV_LED) || (defined(HAVE_DECL_EV_LED) && HAVE_DECL_EV_LED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_LED) == (0x11), "EV_LED != 0x11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_LED 0x11
#endif
#if defined(EV_SND) || (defined(HAVE_DECL_EV_SND) && HAVE_DECL_EV_SND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_SND) == (0x12), "EV_SND != 0x12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_SND 0x12
#endif
#if defined(EV_REP) || (defined(HAVE_DECL_EV_REP) && HAVE_DECL_EV_REP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_REP) == (0x14), "EV_REP != 0x14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_REP 0x14
#endif
#if defined(EV_FF) || (defined(HAVE_DECL_EV_FF) && HAVE_DECL_EV_FF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_FF) == (0x15), "EV_FF != 0x15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_FF 0x15
#endif
#if defined(EV_PWR) || (defined(HAVE_DECL_EV_PWR) && HAVE_DECL_EV_PWR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_PWR) == (0x16), "EV_PWR != 0x16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_PWR 0x16
#endif
#if defined(EV_FF_STATUS) || (defined(HAVE_DECL_EV_FF_STATUS) && HAVE_DECL_EV_FF_STATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((EV_FF_STATUS) == (0x17), "EV_FF_STATUS != 0x17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define EV_FF_STATUS 0x17
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat evdev_ev[] = {
 XLAT(EV_SYN),
 XLAT(EV_KEY),
 XLAT(EV_REL),
 XLAT(EV_ABS),
 XLAT(EV_MSC),
 XLAT(EV_SW),
 XLAT(EV_LED),
 XLAT(EV_SND),
 XLAT(EV_REP),
 XLAT(EV_FF),
 XLAT(EV_PWR),
 XLAT(EV_FF_STATUS),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
