Blacklist SW_MAX so it doesn't shadow SW_PEN_INSERTED
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 26 Feb 2018 07:02:41 +0000 (17:02 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Mon, 26 Feb 2018 07:12:08 +0000 (17:12 +1000)
They have the same value, so the _MAX code would shadow the real code, causing
issues in any client that needs to get all event names from libevdev.
Specifically, the loop of:
  for each code in 0 to max-for-type:
      print(name)
would not show up the code (but the _MAX) code instead. This causes issues
with clients that rely on name resolution that works. And the _MAX values are
special values anyway.

Blacklist it in the script here, causing it to resolve from name to code, but
not from code to name (like other duplicated codes).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
libevdev/make-event-names.py
test/test-event-codes.c
test/test-event-names.c

index 8ec8858..44e1685 100755 (executable)
@@ -36,6 +36,7 @@ blacklist = [
                "BTN_DIGI",
                "BTN_WHEEL",
                "BTN_TRIGGER_HAPPY",
+               "SW_MAX",
                "REP_MAX",
 ]
 
index b64940e..80f277b 100644 (file)
@@ -72,7 +72,7 @@ START_TEST(test_key_codes)
        ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_0"), KEY_0);
        ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_GAIN"), FF_GAIN);
        ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_MAX"), FF_STATUS_MAX);
-       ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_MAX"), SW_MAX);
+       ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_PEN_INSERTED"), SW_PEN_INSERTED);
 
        ck_assert_int_eq(libevdev_event_code_from_name_n(EV_ABS, "ABS_YXZ", 5), ABS_Y);
 }
index b7d5567..4807dec 100644 (file)
@@ -173,7 +173,8 @@ START_TEST(test_code_sw_name)
        ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_LID), "SW_LID");
        ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_RFKILL_ALL), "SW_RFKILL_ALL");
        ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_LINEIN_INSERT), "SW_LINEIN_INSERT");
-       ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_MAX), "SW_MAX");
+       ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_PEN_INSERTED), "SW_PEN_INSERTED");
+       ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_MAX), "SW_PEN_INSERTED");
 }
 END_TEST