/* * Saitek X52 IO driver * * Copyright (C) 2012-2026 Nirenjan Krishnan (nirenjan@nirenjan.org) * * SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0 */ #include "build-config.h" #include #include _Static_assert((LIBX52IO_AXIS_MAX + LIBX52IO_BUTTON_MAX + 1) < 64, "CRITICAL: Report bitmask definitions exceed 64-bit allocation capacity!"); // __attribute__((unused)) stops the compiler from throwing an unused variable warning __attribute__((unused)) static const char unique_bit_check[] = { [LIBX52IO_AXIS_X] = 1, [LIBX52IO_AXIS_Y] = 1, [LIBX52IO_AXIS_RZ] = 1, [LIBX52IO_AXIS_Z] = 1, [LIBX52IO_AXIS_RX] = 1, [LIBX52IO_AXIS_RY] = 1, [LIBX52IO_AXIS_SLIDER] = 1, [LIBX52IO_AXIS_THUMBX] = 1, [LIBX52IO_AXIS_THUMBY] = 1, [LIBX52IO_AXIS_HATX] = 1, [LIBX52IO_AXIS_HATY] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_TRIGGER] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_TRIGGER_2] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_FIRE] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_PINKY] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_A] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_B] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_C] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_D] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_E] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T1_UP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T1_DN] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T2_UP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T2_DN] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T3_UP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T3_DN] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_N] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_E] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_S] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_W] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_N] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_E] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_S] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_W] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_CLUTCH] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_PRIMARY] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_SECONDARY] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_SCROLL_UP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_SCROLL_DN] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_FUNCTION] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_START_STOP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_RESET] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_PG_UP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_PG_DN] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_UP] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_DN] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_SELECT] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MODE_1] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MODE_2] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MODE_3] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BUTTON_MAX] = 1, [LIBX52IO_AXIS_MAX + LIBX52IO_BUTTON_MAX + 1] = 1, };