*/
int libevdev_event_type_get_max(unsigned int type);
+/**
+ * @ingroup misc
+ *
+ * Look up an event-type by its name. Event-types start with "EV_" followed by
+ * the name (eg., "EV_ABS"). The "EV_" prefix must be included in the name. It
+ * returns the constant assigned to the event-type or -1 if not found.
+ *
+ * @param name A non-NULL string describing an input-event type ("EV_KEY",
+ * "EV_ABS", ...), zero-terminated.
+ *
+ * @return The given type constant for the passed name or -1 if not found.
+ *
+ * @note EV_MAX is also recognized.
+ */
+int libevdev_event_type_from_name(const char *name);
+
/**
* @ingroup misc
*
* @param name A non-NULL string describing an input-event type ("EV_KEY",
* "EV_ABS", ...).
* @param len The length of the passed string excluding any terminating 0
- * character. If less than zero the string is assumed to be zero-terminated.
+ * character.
*
* @return The given type constant for the passed name or -1 if not found.
*
* @note EV_MAX is also recognized.
*/
-int libevdev_event_type_from_name(const char *name, ssize_t len);
+int libevdev_event_type_from_name_n(const char *name, size_t len);
+
+/**
+ * @ingroup misc
+ *
+ * Look up an event-code by its type and name. Event-codes start with a fixed
+ * prefix followed by their name (eg., "ABS_X"). The prefix must be included in
+ * the name. It returns the constant assigned to the event-code or -1 if not
+ * found.
+ *
+ * You have to pass the event-type where to look for the name. For instance, to
+ * resolve "ABS_X" you need to pass EV_ABS as type and "ABS_X" as string.
+ * Supported event-codes are codes starting with SYN_, KEY_, BTN_, REL_, ABS_,
+ * MSC_, SND_, SW_, LED_, REP_, FF_.
+ *
+ * @param type The event type (EV_* constant) where to look for the name.
+ * @param name A non-NULL string describing an input-event code ("KEY_A",
+ * "ABS_X", "BTN_Y", ...), zero-terminated.
+ *
+ * @return The given code constant for the passed name or -1 if not found.
+ */
+int libevdev_event_code_from_name(unsigned int type, const char *name);
/**
* @ingroup misc
* @param name A non-NULL string describing an input-event code ("KEY_A",
* "ABS_X", "BTN_Y", ...).
* @param len The length of the passed string excluding any terminating 0
- * character. If less than zero the string is assumed to be zero-terminated.
+ * character.
*
* @return The given code constant for the passed name or -1 if not found.
*/
-int libevdev_event_code_from_name(unsigned int type, const char *name,
- ssize_t len);
+int libevdev_event_code_from_name_n(unsigned int type, const char *name,
+ size_t len);
/**
* @ingroup bits
START_TEST(test_type_codes)
{
- ck_assert(libevdev_event_type_from_name("EV_SYN", -1) == EV_SYN);
- ck_assert(libevdev_event_type_from_name("EV_KEY", -1) == EV_KEY);
- ck_assert(libevdev_event_type_from_name("EV_REL", -1) == EV_REL);
- ck_assert(libevdev_event_type_from_name("EV_ABS", -1) == EV_ABS);
- ck_assert(libevdev_event_type_from_name("EV_MSC", -1) == EV_MSC);
- ck_assert(libevdev_event_type_from_name("EV_SND", -1) == EV_SND);
- ck_assert(libevdev_event_type_from_name("EV_SW", -1) == EV_SW);
- ck_assert(libevdev_event_type_from_name("EV_LED", -1) == EV_LED);
- ck_assert(libevdev_event_type_from_name("EV_REP", -1) == EV_REP);
- ck_assert(libevdev_event_type_from_name("EV_FF", -1) == EV_FF);
- ck_assert(libevdev_event_type_from_name("EV_FF_STATUS", -1) == EV_FF_STATUS);
- ck_assert(libevdev_event_type_from_name("EV_MAX", -1) == EV_MAX);
+ ck_assert(libevdev_event_type_from_name("EV_SYN") == EV_SYN);
+ ck_assert(libevdev_event_type_from_name("EV_KEY") == EV_KEY);
+ ck_assert(libevdev_event_type_from_name("EV_REL") == EV_REL);
+ ck_assert(libevdev_event_type_from_name("EV_ABS") == EV_ABS);
+ ck_assert(libevdev_event_type_from_name("EV_MSC") == EV_MSC);
+ ck_assert(libevdev_event_type_from_name("EV_SND") == EV_SND);
+ ck_assert(libevdev_event_type_from_name("EV_SW") == EV_SW);
+ ck_assert(libevdev_event_type_from_name("EV_LED") == EV_LED);
+ ck_assert(libevdev_event_type_from_name("EV_REP") == EV_REP);
+ ck_assert(libevdev_event_type_from_name("EV_FF") == EV_FF);
+ ck_assert(libevdev_event_type_from_name("EV_FF_STATUS") == EV_FF_STATUS);
+ ck_assert(libevdev_event_type_from_name("EV_MAX") == EV_MAX);
- ck_assert(libevdev_event_type_from_name("EV_SYNTAX", 6) == EV_SYN);
- ck_assert(libevdev_event_type_from_name("EV_REPTILE", 6) == EV_REP);
+ ck_assert(libevdev_event_type_from_name_n("EV_SYNTAX", 6) == EV_SYN);
+ ck_assert(libevdev_event_type_from_name_n("EV_REPTILE", 6) == EV_REP);
}
END_TEST
START_TEST(test_type_invalid)
{
- ck_assert(libevdev_event_type_from_name("EV_Syn", -1) == -1);
- ck_assert(libevdev_event_type_from_name("ev_SYN", -1) == -1);
- ck_assert(libevdev_event_type_from_name("SYN", -1) == -1);
+ ck_assert(libevdev_event_type_from_name("EV_Syn") == -1);
+ ck_assert(libevdev_event_type_from_name("ev_SYN") == -1);
+ ck_assert(libevdev_event_type_from_name("SYN") == -1);
+ ck_assert(libevdev_event_type_from_name("EV_SYNTAX") == -1);
- ck_assert(libevdev_event_type_from_name("EV_SYN", 5) == -1);
- ck_assert(libevdev_event_type_from_name("EV_SYNTAX", -1) == -1);
- ck_assert(libevdev_event_type_from_name("EV_REPTILE", 7) == -1);
+ ck_assert(libevdev_event_type_from_name_n("EV_SYN", 5) == -1);
+ ck_assert(libevdev_event_type_from_name_n("EV_REPTILE", 7) == -1);
}
END_TEST
START_TEST(test_key_codes)
{
- ck_assert(libevdev_event_code_from_name(EV_SYN, "SYN_REPORT", -1) == SYN_REPORT);
- ck_assert(libevdev_event_code_from_name(EV_ABS, "ABS_X", -1) == ABS_X);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "BTN_A", -1) == BTN_A);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "KEY_A", -1) == KEY_A);
- ck_assert(libevdev_event_code_from_name(EV_REL, "REL_X", -1) == REL_X);
- ck_assert(libevdev_event_code_from_name(EV_ABS, "ABS_YXZ", 5) == ABS_Y);
- ck_assert(libevdev_event_code_from_name(EV_MSC, "MSC_RAW", -1) == MSC_RAW);
- ck_assert(libevdev_event_code_from_name(EV_LED, "LED_KANA", -1) == LED_KANA);
- ck_assert(libevdev_event_code_from_name(EV_SND, "SND_BELL", -1) == SND_BELL);
- ck_assert(libevdev_event_code_from_name(EV_REP, "REP_DELAY", -1) == REP_DELAY);
- ck_assert(libevdev_event_code_from_name(EV_SYN, "SYN_DROPPED", -1) == SYN_DROPPED);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "KEY_RESERVED", -1) == KEY_RESERVED);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "BTN_0", -1) == BTN_0);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "KEY_0", -1) == KEY_0);
- ck_assert(libevdev_event_code_from_name(EV_FF, "FF_GAIN", -1) == FF_GAIN);
- ck_assert(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_MAX", -1) == FF_STATUS_MAX);
- ck_assert(libevdev_event_code_from_name(EV_SW, "SW_MAX", -1) == SW_MAX);
+ ck_assert(libevdev_event_code_from_name(EV_SYN, "SYN_REPORT") == SYN_REPORT);
+ ck_assert(libevdev_event_code_from_name(EV_ABS, "ABS_X") == ABS_X);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "BTN_A") == BTN_A);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "KEY_A") == KEY_A);
+ ck_assert(libevdev_event_code_from_name(EV_REL, "REL_X") == REL_X);
+ ck_assert(libevdev_event_code_from_name(EV_MSC, "MSC_RAW") == MSC_RAW);
+ ck_assert(libevdev_event_code_from_name(EV_LED, "LED_KANA") == LED_KANA);
+ ck_assert(libevdev_event_code_from_name(EV_SND, "SND_BELL") == SND_BELL);
+ ck_assert(libevdev_event_code_from_name(EV_REP, "REP_DELAY") == REP_DELAY);
+ ck_assert(libevdev_event_code_from_name(EV_SYN, "SYN_DROPPED") == SYN_DROPPED);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "KEY_RESERVED") == KEY_RESERVED);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "BTN_0") == BTN_0);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "KEY_0") == KEY_0);
+ ck_assert(libevdev_event_code_from_name(EV_FF, "FF_GAIN") == FF_GAIN);
+ ck_assert(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_MAX") == FF_STATUS_MAX);
+ ck_assert(libevdev_event_code_from_name(EV_SW, "SW_MAX") == SW_MAX);
+
+ ck_assert(libevdev_event_code_from_name_n(EV_ABS, "ABS_YXZ", 5) == ABS_Y);
}
END_TEST
START_TEST(test_key_invalid)
{
- ck_assert(libevdev_event_code_from_name(EV_MAX, "MAX_FAKE", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_CNT, "CNT_FAKE", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_PWR, "PWR_SOMETHING", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_ABS, "EV_ABS", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_ABS, "ABS_X", 4) == -1);
- ck_assert(libevdev_event_code_from_name(EV_ABS, "ABS_XY", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "BTN_GAMEPAD", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "BUS_PCI", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_FF, "FF_STATUS", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_FF, "FF_STATUS_", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_KEY, "ID_BUS", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_SND, "SND_CNT", -1) == -1);
- ck_assert(libevdev_event_code_from_name(EV_SW, "SW_CNT", -1) == -1);
+ ck_assert(libevdev_event_code_from_name(EV_MAX, "MAX_FAKE") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_CNT, "CNT_FAKE") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_PWR, "PWR_SOMETHING") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_ABS, "EV_ABS") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_ABS, "ABS_XY") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "BTN_GAMEPAD") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "BUS_PCI") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_FF, "FF_STATUS") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_FF, "FF_STATUS_") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_KEY, "ID_BUS") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_SND, "SND_CNT") == -1);
+ ck_assert(libevdev_event_code_from_name(EV_SW, "SW_CNT") == -1);
+
+ ck_assert(libevdev_event_code_from_name_n(EV_ABS, "ABS_X", 4) == -1);
}
END_TEST