From nobody Wed Jan 7 22:44:42 2026 Received: from mail-ed1-f67.google.com (mail-ed1-f67.google.com [209.85.208.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E57F2D94A0 for ; Sun, 4 Jan 2026 21:31:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.67 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562298; cv=none; b=qFJZVqvicYESuEZ/gv5KeKEoa2GbYc1mG90vKw3QfhKol982N4rsHDNWqoehAcqgC5bTCM1GWyw8xGrYmS/Wam4OvpiM7GK0Tqr6QxkgSx7ZIu1kMEaIvjqkSotc8qTtA4P7j9sD3CTYMl0K8ycDBq4fCO2H03lzry45N+WzjtI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562298; c=relaxed/simple; bh=C3JR6g0Sas4kB+Y9QTc/bGVdciXlgmAK1IrGoVCuBt8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LxPtO3RqWQCpDGg70z5R5pBxNUy7urunGaICis96wTY1JrympjmX6jhkh1JSGa6e4cUc6SUc+BG48MGCyda9sRySy/27EWnibg5bAlDQ6M+Q43XS5vZs8urnpdkCNQJobT7TJ+eorvB/qVmYQECKaTvR8GRkyOQUZ1qwx7oL0Ns= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dRcDpRW/; arc=none smtp.client-ip=209.85.208.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dRcDpRW/" Received: by mail-ed1-f67.google.com with SMTP id 4fb4d7f45d1cf-64b6f22bc77so3002136a12.1 for ; Sun, 04 Jan 2026 13:31:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767562295; x=1768167095; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kNOBG85Xy8cdjBjzjHxVJyG6BfNKbQYZeOQLA90PZUs=; b=dRcDpRW/BcZFkc3oHHO0U+nEQmu4slDBW/M7ASx8BUzdYu+jjHDCAjzbMxGm8aZ13Y +RsJbxgc3EY6rGpwITPfjXnqajV+P/m9bMoHRqZ0VUjgvJhgX3HEaV0vgp5Rrk/WaFmB 6F3drwlB9/wl+UK9c8CUAPVjhJljkZYbhyjBaIeNSb+YyGTVt7G8wsO/UvhHrAKyBTMv nOX+KcfkHfgfbUvpek9sCnqMgqPiJjfLqZRiKWCIKRtYScoAJ8mX8cyKXuQDbXV/I74F +AegRp1v76a+xENR5TThaDPxwtIzJXm8qVkE+pvEc3Nhc5eSXFyLw+BpW3/ntcprOXFg 6YWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767562295; x=1768167095; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kNOBG85Xy8cdjBjzjHxVJyG6BfNKbQYZeOQLA90PZUs=; b=OwaVq/lHIiUXoX3Sby2WDuHGnsdj836PveV5H6pMeAcIp7IUPVoTNaQFjENft/f469 YwBxOB/CXZ+5/bJJeGv1VQ1/qeZyHTNjj584jNAtikHf1aojMaVoouqgt0hb52eG5Pwq zlP7XB+RKsu+5NZiNhtqFJQw7YsB+3/+FHdtWx0yPu44By6XcTva8VPYK9lw9T4JK7Ea nClMwra7NNvTA22mQ5kEs69A8KzEmTb0ajK4i93mk5xUF2Ii3CbElDCzY13Q2dMcgbTm iQKlt00/cA4u3P8e4njYgdRcGQUqZetpb30SyRHlTDFwQpezR++CXHEcxk2xerFbHXi0 zgCA== X-Forwarded-Encrypted: i=1; AJvYcCWjO2uWEZ5ax9tc9eV9CRfNp9mptq2xW0dJFkkQon4f8R6upkNI6aVg7tuyOqiY5tVE19gzFIqMt1XVbXs=@vger.kernel.org X-Gm-Message-State: AOJu0YxoC1IW4RiZy0PPli/hzJ9l98UzIow5JGVLS9Im+uXwSkq98c9S DKSUhN9jLDLt/KbDbYUDq+GEb0vlm98Lu7YnwR7O8HTQtnyCMQC9jkMZtRw3djos X-Gm-Gg: AY/fxX4PlaNtJ0InCX7LXuqZLaaN1X8tgn578kKk+J/4YGSYw5u6w6s4fbVEh0a0fhZ Ml6OShrDW4ixr8yILy7GHbGq20ARY0JUbHdestSwmlOyUyt323oa2BR25tD3FAYSPx0SaIBvXAa ugVCiXpsXaoYE2SahPVQaehOu4yjjG1EIeCxFhXi2JzlqNO6CsyLsV+JocS2bwfQ3K+IXwbu7Wt t1tU2GndzyrTha6biF/yrOXTrtSj/urCJTJeZ8CFWl3rpRIWXnvOmoFZMhPcc4YNhA7v0jlA38H xrp8OX7Tndn/mhK8Z/c7Y1qkxl6GGkFN+zAfVqxEkndmuuI0Z0vZV5ujew95QgINl7KZy1jVuT3 9RfQesHv4A3M+FhKm0cPsI0+WPxT2ahGhpXErF5PcO9uWfb8028tzVgJ47Yq/YxOzO+n92gEjcp zWFVSNjwsfkNDmf3mxr9uOFjdk26l15I2+73ARiIoszEZZ1Zaulh6Nk9zK0TuSYnFr X-Google-Smtp-Source: AGHT+IFp1Q3/HUuxiOTFczGNZI4zqQO6mImnPSIg80YYgcO2gFHg65+7gjjTh3EfyWvi5spIDfDlww== X-Received: by 2002:a05:6402:3550:b0:649:9aff:9f42 with SMTP id 4fb4d7f45d1cf-64b8e3a43e5mr24517580a12.0.1767562294773; Sun, 04 Jan 2026 13:31:34 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9105a9c4sm51947772a12.12.2026.01.04.13.31.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 13:31:34 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: dmitry.torokhov@gmail.com, corbet@lwn.net, jikos@kernel.org, bentiss@kernel.org Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, vi@endrift.com, linux-kernel@altimeter.info, peter.hutterer@who-t.net Subject: [RFC PATCH 1/6] Input: Introduce EV_BTN event for generic buttons Date: Sun, 4 Jan 2026 22:31:27 +0100 Message-ID: <20260104213132.163904-2-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> References: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This will be used to fire generic button events that only transmit button number and it's value, not related to any defined usage. Made for HID joysticks but could be adopted by other devices. Signed-off-by: Tomasz Paku=C5=82a --- Documentation/input/event-codes.rst | 5 +++++ include/uapi/linux/input-event-codes.h | 1 + 2 files changed, 6 insertions(+) diff --git a/Documentation/input/event-codes.rst b/Documentation/input/even= t-codes.rst index 4424cbff251f..c387eaa63dfb 100644 --- a/Documentation/input/event-codes.rst +++ b/Documentation/input/event-codes.rst @@ -59,6 +59,11 @@ Codes section for details on valid codes for each type. =20 - Used to describe binary state input switches. =20 +* EV_BTN: + + - Used to describe state changes generic, numbered buttons without defin= ed + usages. + * EV_LED: =20 - Used to turn LEDs on devices on and off. diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/in= put-event-codes.h index 30f3c9eaafaa..1c853c37b58a 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -42,6 +42,7 @@ #define EV_ABS 0x03 #define EV_MSC 0x04 #define EV_SW 0x05 +#define EV_BTN 0x06 #define EV_LED 0x11 #define EV_SND 0x12 #define EV_REP 0x14 --=20 2.52.0 From nobody Wed Jan 7 22:44:42 2026 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 886821C3BF7 for ; Sun, 4 Jan 2026 21:31:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562299; cv=none; b=mO/kk/XRzQtVHv7/2pYEH1mkiTPqk9zhM5zL/fnAFSFfxyqFaIlUxk84sNkMtvs6oly9KGzoIH0nIdneBCT5SQT72W+KciLcnyTrPbJaJtxI3UYYijiAWEPlZaWtJgNJcwF5HGnoqoCpZ0zeMEhuLYOLYfYbEtQ8/ZLokS1qdwE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562299; c=relaxed/simple; bh=f/uwheFHSzT2MnHEE13G2RW3ofjy0vNjvK4QXFqbQkI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ooqyv25gySX52X84lXFajrjse7Ba2X0ps3XbqsjLjfvIP+opVHjn1qFOvZAP/5Tv12ogbUhG27rJR13AWfi/Hr0rXTlQeZPvkk15XTBk6viJf1oDe2XSq5iosuhzuEEeWbrClWcTCQL0AxktV12ODRpSDxVn5oHR/dVvtvHxag4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jzrYKwEe; arc=none smtp.client-ip=209.85.208.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jzrYKwEe" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-64b5eb14e88so3104173a12.2 for ; Sun, 04 Jan 2026 13:31:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767562296; x=1768167096; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J1ju9uJ8HtmgaH2DMl24DFV+9KpxYvqpDWRQN/CQZFw=; b=jzrYKwEefYi6T1sJ/ERtENot+z3voBmVCNU0Il+yUUsksJ1Fu/S4RYve24asGgIX+g uQHxhFMcbJZvhwVrJxws8HBbPj9MJ3y81RDu0J2FPLLq+WxQrxhY2rvpSmEMDPrdZrze yGrq6Hdok5bXzEryBaRalHr12FJuPeFtA5ZjvMEJAsknMrSfJgftGnIBgOuh6ce77Kty U+YFoTRZU6wvGle9XzOdhgVBXzJrJYnSF+KlCbsOdmBIGUOZTWT+TvqBLGiwRjOTNUiN BFvkumgk4hsZ8eVqkRZiT8z+IrYigLKYL+w5NRon9mRol3ezev1NXYpHXQ72Rd/mzqMw nAPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767562296; x=1768167096; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=J1ju9uJ8HtmgaH2DMl24DFV+9KpxYvqpDWRQN/CQZFw=; b=JdYOJLiWjMUxtH9aPJ67VRd/QzDiu3H61it1nVl6tmuiddBie0tJhPKnVUMlWMfzZv Gi+lHkUcX6JdrQCgjrKTdgyrMublDAQGWVuCUnBJGrg2Tuyg1bKBOSaQlMnPv3RUfAvU 9DXNq2Qvay/5HH16bJvbFeM14GQPqM74aexcN4yK7pBId2I/XtjSQ8grRjmy9IMbgg2s EIW3vA6rS1qSfkftEpaaJc+56Y0krlomqqvtOmwgn959AMu+Acp2thPw4A0C8huRAfK6 s65+6q6eBFZAW+D4FzNfptFd0Xv5CznhpFMhwIFXurq7+/zws3zkZuyWpZr2Kqk8GQQ+ rBTA== X-Forwarded-Encrypted: i=1; AJvYcCX7z9j8Xc8J/VisXVVOH1T8GtFVc/XQ4xhRI6t7lc1Jnvhl1KedDs9t65ePL9404Tp/VNmcYiqtvA/EJd4=@vger.kernel.org X-Gm-Message-State: AOJu0YyvtTg04k+B12NLi4EODDgQbYhmil0F1CU7Bi7Y463U+TL+j82c XjIQIQbNpGpv/ciHR5P2iKmIJiC0npQ6GGKa/I4f21rYxx1LJgOnZY5i X-Gm-Gg: AY/fxX6IhmFPDVnqeTug8zl9v4BwSCWXOINLC8DwmV8V/Pq4aOHDcl25VzmHfqIvAJU 97A9SQp0osOCe9NzQonMDSh55wgR+H2OBeI3DH371v8RqsMdW31XZ4d9Xjc4aW+N6S8Obfux6dZ bX149ouaM5esRd64z53qntn0Y7YtraR4m4hkgHg3ZA+RvBgkef/S2wVpXNJB+NOd6sClFewwCJb 7aBvl4RJ4JMLrFtp4VWEF8uNRapjvx6YM0Xz7UsH8oG16yCjYZRgvjF2WwMZgiCyOEW8IqvY233 SlBcXyjgrZbAw4I9B5CImPHE2nfqI07VDVOPOotkI8Efh2ORWYqZ8y+S321hMeu+I/M5ZEOjg/o QKxoM031LfPcxMFRkN/zIHStqnqsRknfzbs1hBL8ITmHjqH4Mlycmat/qg8jLgOQOwlQMd+eWY3 ApMhhnkNVE3vA5iGGUw1RDms3HffFVwMm7Z0m644pS+I4U31vaqolfFl+Ay4lG8Jfw X-Google-Smtp-Source: AGHT+IH2FCylLobZ0wkmnV3e/fGGLODdTT8iSPZe82AXEhgV2cQNmF9xtamMrKBG4lju1W+Of3dwhg== X-Received: by 2002:a05:6402:268a:b0:64b:76cb:5521 with SMTP id 4fb4d7f45d1cf-64b8e94bf43mr26815872a12.2.1767562295814; Sun, 04 Jan 2026 13:31:35 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9105a9c4sm51947772a12.12.2026.01.04.13.31.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 13:31:35 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: dmitry.torokhov@gmail.com, corbet@lwn.net, jikos@kernel.org, bentiss@kernel.org Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, vi@endrift.com, linux-kernel@altimeter.info, peter.hutterer@who-t.net Subject: [RFC PATCH 2/6] Input: Add info about EV_BTN Date: Sun, 4 Jan 2026 22:31:28 +0100 Message-ID: <20260104213132.163904-3-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> References: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add necessary bits to modalias etc. Store the number of buttons. Signed-off-by: Tomasz Paku=C5=82a --- drivers/input/input.c | 10 ++++++++++ include/linux/input.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/drivers/input/input.c b/drivers/input/input.c index a500e1e276c2..e926327443bb 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -258,6 +258,10 @@ static int input_get_disposition(struct input_dev *dev, } break; =20 + case EV_BTN: + disposition =3D INPUT_PASS_TO_HANDLERS; + break; + case EV_ABS: if (is_event_supported(code, dev->absbit, ABS_MAX)) disposition =3D input_handle_abs_event(dev, code, &value); @@ -1124,6 +1128,8 @@ static int input_devices_seq_show(struct seq_file *se= q, void *v) input_seq_print_bitmap(seq, "FF", dev->ffbit, FF_MAX); if (test_bit(EV_SW, dev->evbit)) input_seq_print_bitmap(seq, "SW", dev->swbit, SW_MAX); + if (test_bit(EV_BTN, dev->evbit)) + seq_printf(seq, "I: BTN=3D%u\n", dev->button_count); =20 seq_putc(seq, '\n'); =20 @@ -1347,6 +1353,7 @@ static int input_print_modalias_parts(char *buf, int = size, int full_len, 'f', id->ffbit, 0, FF_MAX); len +=3D input_print_modalias_bits(buf + len, size - len, 'w', id->swbit, 0, SW_MAX); + len +=3D snprintf(buf + len, size - len, "t%u", id->button_count); =20 return len; } @@ -1679,6 +1686,8 @@ static int input_dev_uevent(const struct device *devi= ce, struct kobj_uevent_env INPUT_ADD_HOTPLUG_BM_VAR("FF=3D", dev->ffbit, FF_MAX); if (test_bit(EV_SW, dev->evbit)) INPUT_ADD_HOTPLUG_BM_VAR("SW=3D", dev->swbit, SW_MAX); + if (test_bit(EV_BTN, dev->evbit)) + INPUT_ADD_HOTPLUG_VAR("BTN=3D%u", dev->button_count); =20 INPUT_ADD_HOTPLUG_MODALIAS_VAR(dev); =20 @@ -2113,6 +2122,7 @@ void input_set_capability(struct input_dev *dev, unsi= gned int type, unsigned int break; =20 case EV_PWR: + case EV_BTN: /* do nothing */ break; =20 diff --git a/include/linux/input.h b/include/linux/input.h index 7d7cb0593a63..f6389de4a4d1 100644 --- a/include/linux/input.h +++ b/include/linux/input.h @@ -59,6 +59,7 @@ enum input_clock_type { * @sndbit: bitmap of sound effects supported by the device * @ffbit: bitmap of force feedback effects supported by the device * @swbit: bitmap of switches present on the device + * @button_count: number of generic buttons present on the device. * @hint_events_per_packet: average number of events generated by the * device in a packet (between EV_SYN/SYN_REPORT events). Used by * event handlers to estimate size of the buffer needed to hold @@ -152,6 +153,7 @@ struct input_dev { unsigned long ffbit[BITS_TO_LONGS(FF_CNT)]; unsigned long swbit[BITS_TO_LONGS(SW_CNT)]; =20 + unsigned int button_count; unsigned int hint_events_per_packet; =20 unsigned int keycodemax; --=20 2.52.0 From nobody Wed Jan 7 22:44:42 2026 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95FAD2F0C7D for ; Sun, 4 Jan 2026 21:31:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562300; cv=none; b=qybgk9o8V3sJeVBN8qbN/ZnhBQNLQVORSSu3u8sSnRgQSt7lV5UzzVshk00vBPB3WVjfJbH7ARbn+pbOszPzpyF6LtyRPhcfTtmkrNuedAtDtYhsVvwJFy1YlhSzH5gP5yQ8JrWL12MrSd4txJKw+olSXh8y2yLxRayDFogtTFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562300; c=relaxed/simple; bh=K1Gr+aLk2G42C9RgkcZD+nIQ5P+OEJfi74ouHBrvAYI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=H/a6R88VpO8dL0BrbTIfzDDY/MwxQ5HbC/WuiFPuxGHIiZGWobao55nu3SNJDOkh6RufRrvxCBRoge5sKWuaHWwqf9ZbqbGM/PcldM1yd1lyV+AwR5OAr9RVgcXEcfRAmJsFtAbW17QA/LMmvykUYNuLy/CBFqnTovi0ezIoQp8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XG5+I6QQ; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XG5+I6QQ" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-64b5eb14e88so3104178a12.2 for ; Sun, 04 Jan 2026 13:31:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767562297; x=1768167097; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gFooUSrVXm9pvAYpHh/HKF6iHEd9ba7nkhN8dd9UQqs=; b=XG5+I6QQbfGlSRsAV56UgWhVvqpmEwq0feduOm3pWXjrfjZAZ5uluqIZf9nq/KuukR r9qvfww9LVScMqkVY0wcSin1dfc1Ffo52am95rqsUrbTDd/dNDHJ2FYSUevgglePXOX4 PVR+07DmiPh5R4uyclXzlvWtYP8MwNqBdmiUHbUPvUNsipVLWp2O+IQYMh4pW1nXmpj8 XKr4rMx3tgff00aU4DiMBflsNcqB5MNKJZDSTaYss4q9uCdmR6TJUqHql27+W1DX7Hdt 0c/MJ2e8nixc6a5zV91U6Lpb05lrbUOGV+mEnzQFpYH5vZ8PMWLuv8tKKkx6Ce1B3ZZt SBTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767562297; x=1768167097; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=gFooUSrVXm9pvAYpHh/HKF6iHEd9ba7nkhN8dd9UQqs=; b=R3b8xgFw9ErCtMSP7yzrttVbrteuwaJzf6iuiwDJsTUVOxkTF++6KJ0pJ2DZ/16sCL oep38BAAk+cfItit/Y9tjd12NDvsFaQClrG2ThfdjmdJSRJ9dY22/mxZu0vmajN3LxyP e+vgLnYsxMnkIcdd4ECBW4TlHuu2zPMICCMXFeVBYRSY32ayMt6O0HafoD/f0vRtUO/C wO+DI9Hi7nM/41n3hlDrGswIt0EdTMia4sSLiQ6rHfWo30YXBYgeGW1Le/v2dFcZQP7S zUZO0e2OYQduokTJRc+ATQf3bjzmTBBC0UgUyIvP+Z5H6baDEk1oJMoxaLO+TOCEwLFa mSUg== X-Forwarded-Encrypted: i=1; AJvYcCVJ1GMhLoZfm0QwWTnRq695tcWEapJDNk7qfaZy4ZfCNcJT9xB/mz3IFJHVwe2zApel2y72kzAw8va4jvc=@vger.kernel.org X-Gm-Message-State: AOJu0YwQMYP25dn/L03ToAs+ExdXzD6/ZYy80kmcjddCQ2dLxrPeiU7c 7hGM1f2hxW7UGdJ1S4vWyQq2RdA5lFR0ZEof/sjNeJAzGiCoxxNh7biU X-Gm-Gg: AY/fxX4HUJC9WVB06h256DKEtLeqOksnfByFQnIC2gCaCUYauwpE7+Mqgqg/ljs39cy +8gry7t4g+gR+tc7ePbpru1+Ut6HFzCr76nCW+MvR1Q7bIjm1lBRASx502Qq1llJQAxX1a3KpDm 12PHWKucs04ggoROCBZsVB/O1H+gNDGQ7BX/X4Z5KUPrwZ1HgP0UNA4DsjIW/JsGFeojefYGdT9 7+D/yG6UdUzk9b8Sg40ptMy+IhpsylaMOfQufmJlBTcdeFpuS3Z8G3YTfWqklwEGX08Y06n4SBo LpCUOpbwBa73DQpptgPpzHIbN6oxvED3WwBG4cs9HDPmXcg2j2cyZx20dYTZ6IuA8YZ/GpS5Fq/ /a8/7ZIeQNihYHUZ2lcRU3gDjlXAmRspPxTtCrzcQ/K5LqqD5RPXx1p8e3XIP6BJto7aGuCp0Q6 ZaXXhOzPUrH3BNzYwO06hHu7ZQXekeI23taMfHCr52ig4QPRZ9WEaW11UtJIJcTxsViY4o7MgP2 6Y= X-Google-Smtp-Source: AGHT+IGjUkLkKEMTWYzAwCdwlq8lHOYywpLwMuXneu5ARm5/T3CMRRTVuA7vHtt8tpniBq9fgW1EtA== X-Received: by 2002:a05:6402:5244:b0:64d:23ac:6ca6 with SMTP id 4fb4d7f45d1cf-64d23ac72fdmr25639337a12.4.1767562296850; Sun, 04 Jan 2026 13:31:36 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9105a9c4sm51947772a12.12.2026.01.04.13.31.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 13:31:36 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: dmitry.torokhov@gmail.com, corbet@lwn.net, jikos@kernel.org, bentiss@kernel.org Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, vi@endrift.com, linux-kernel@altimeter.info, peter.hutterer@who-t.net Subject: [RFC PATCH 3/6] Input: Fire EV_BTN if found in ev_bit Date: Sun, 4 Jan 2026 22:31:29 +0100 Message-ID: <20260104213132.163904-4-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> References: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Passes EV_BTN through to handlers and allows reacting to this event by clients. Signed-off-by: Tomasz Paku=C5=82a --- drivers/hid/hid-input.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 2bbb645c2ff4..900a6fc9813e 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -1673,7 +1673,8 @@ void hidinput_hid_event(struct hid_device *hid, struc= t hid_field *field, struct =20 switch (usage->type) { case EV_KEY: - if (usage->code =3D=3D 0) /* Key 0 is "unassigned", not KEY_UNKNOWN */ + /* Key 0 is "unassigned", not KEY_UNKNOWN */ + if (usage->code =3D=3D 0 && !test_bit(EV_BTN, input->evbit)) return; break; =20 @@ -1723,10 +1724,19 @@ void hidinput_hid_event(struct hid_device *hid, str= uct hid_field *field, struct value =3D=3D field->value[usage->usage_index]) return; =20 - /* report the usage code as scancode if the key status has changed */ - if (usage->type =3D=3D EV_KEY && - (!test_bit(usage->code, input->key)) =3D=3D value) - input_event(input, EV_MSC, MSC_SCAN, usage->hid); + + if (usage->type =3D=3D EV_KEY) { + /* Send out EV_BTN with button number (starts at 1) */ + if (test_bit(EV_BTN, input->evbit)) + input_event(input, EV_BTN, usage->hid & HID_USAGE, value); + + if (usage->code =3D=3D 0) + return; + + /* report usage code as scancode if the status has changed */ + if ((!test_bit(usage->code, input->key)) =3D=3D value) + input_event(input, EV_MSC, MSC_SCAN, usage->hid); + } =20 input_event(input, usage->type, usage->code, value); =20 --=20 2.52.0 From nobody Wed Jan 7 22:44:42 2026 Received: from mail-ej1-f66.google.com (mail-ej1-f66.google.com [209.85.218.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 978DE2F12D9 for ; Sun, 4 Jan 2026 21:31:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562302; cv=none; b=TDk5yRqPc3/g5cOWR8KCqi/xUBZmRuFoZpI5Bn5mfqyXcoiDXhBDdzmHzGbx2BEwqS3ihAYR6XnA5WZDuip0/wIYwJahXQH7xXK5i2DdMYozsp0BHfLwOjWVuB4Ce20oGk594SUD294d7vi6R7Vfitq1uNAPUCQvTXefbQokn7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562302; c=relaxed/simple; bh=/7YH+Zqpi8jckS9SwFkBwQ/lSUU/TC5vR/IH2liykg8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FT2AUk0DYqTHg+NoTVwbvwiI+Lvbg9CGSqMZ0GaQfb513A3aSC3jCS3oYaz0yGf9WizRN58a3YE0QO0ueWSwHORREOAZl9QKqu0REsmVHm1j55qp6YViT4ysf8FX8vFVPnLuSaaRzGD5mSYjoXxxgENDUuROaSjAvrb/lvvQ71I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PDH+1W0b; arc=none smtp.client-ip=209.85.218.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PDH+1W0b" Received: by mail-ej1-f66.google.com with SMTP id a640c23a62f3a-b769a872550so201154966b.3 for ; Sun, 04 Jan 2026 13:31:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767562298; x=1768167098; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PUUroYHtAt2Ce/xZZlgPaiIZoDgmPFJ5E5jP2+Tt7RI=; b=PDH+1W0bfnEngycIXKuGMWDCkfU9LUJIzAeuniNEg2H0dGcy6t+Y+dgclYAhzknDkq DMUYeagy2McjSc/dMnZCuLMkaLGTfDNKPMNblue7iZBzvLZqUtjKvwKEWaIuQeHBpTO8 jA2pHnN1JO/slsjG1JehdVHL3uuzgVIHNhx09suH1ozdQw59HPhl6cTWouJV0YZZWziR L0S+IHib71q5IIvuvmd9AsrsMYPis2ZyF7WRxhopUmu+TcJ7IA2wsZA9UINl1Z+K4ayQ 9HbllrB5AmzEI7Jh+LLDsOggahqYjXwMtAqY8Eb05rhrFrpKat9WNJoHxkUn8k4fd//s fLFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767562298; x=1768167098; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PUUroYHtAt2Ce/xZZlgPaiIZoDgmPFJ5E5jP2+Tt7RI=; b=UEn8FUqDqp9lsZohihYBE/+9hjx47n8xf+wzXBkCW+0ncCL0UW69HHezYMblIr0+TY nbEC3lYYJQIcc+LwD7nr99Ui7cAX6fsK4mPLY94DOeydfN+OT4DFB44MFDf8cbxksQpk JuDVyRF3BsYrmIYbfMkrMaBuVrs7dRKElsQvFVFdCvEowClhV9ba4xUh2FSZw30mFclp i+oHJVKPacdFzHpvriLEPTTmN3ZrJKLBaUU/yl1SwLiBK36BWjwbMiT69A2Gt9w+SpL2 m/tP9GYnYVAHrXvGdEVf04YlryoK5JXZOZmGduW5JGL2iIUCUnaZgWi+eBd3QU2Ai5w5 bsVA== X-Forwarded-Encrypted: i=1; AJvYcCX5oZxB8HYqb4fRsTh6EvMi83owWGp1sJT6GYotk4mrK7vQQZrv/Jt9+lvxA0Qbvy+DJDm0n3nS2rP+m4Y=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3PgawD9UGbvhVS8BmAyhxqC4D0FNapLNYLtMtF9JDZkcIzHUl pRU//eOQAJCHJTWlIlEKa8WNS8IhFaEvDVpAaMesryLGwPYS92EUqn0e X-Gm-Gg: AY/fxX4TfsB6DNHtS13S9wVoLGrRJ/fbfghd5nI/ur5TQF3fbXU0HO/V2RU8zJc0PeA 3fxh3DQe/4HDWSnbKjRHUPxAnAAsMtG29a7SKoyJvpjFA89NrmoeUjBJHwaCo1E/ZkNebWcEHNw 8JV7wYqHcayQ5MtBFpItsX4M4lk+DEV2RLytQNqJ9cmttmayTTDnYRPe3BbkRRFVZwur+mSLWpA j6ePeNJZ23Iqj0PwZoG4DniZ47L+wJz3ea3pYffO6Tq2Pfclq7N3m1MzNapO9eRKfWrLxK+LYID m0saR4GjrSThVqsLUWaNT4/sMGrVXdaxaioChYysSv5ZV+mauV1kSq7lbXnqlFhiCiyCxYSvAyA /UYNottZgWGInyctcyRQVkxR4HsaO12FBm4Co3O1N/nG/G3dCgQvqk/cus5s9dtoFcstPBhjTfe 4AJtHtP4NXEMoyW2d52UNW0LEPzaqM0psGTcMbT+f5I81qS15tI8Gl5Q6Nyq9hwwHU X-Google-Smtp-Source: AGHT+IG+AEIpwPtWYJYhI5A6ldFiprrP803Cg1B0GSU9VpFVObKxSmMNbMgLd9tAEXXNopAk8qcitQ== X-Received: by 2002:a05:6402:4311:b0:649:b47b:2ef7 with SMTP id 4fb4d7f45d1cf-64b8e93de10mr21587011a12.3.1767562297834; Sun, 04 Jan 2026 13:31:37 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9105a9c4sm51947772a12.12.2026.01.04.13.31.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 13:31:37 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: dmitry.torokhov@gmail.com, corbet@lwn.net, jikos@kernel.org, bentiss@kernel.org Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, vi@endrift.com, linux-kernel@altimeter.info, peter.hutterer@who-t.net Subject: [RFC PATCH 4/6] Input: Assign EV_BTN event to HID Joysticks Date: Sun, 4 Jan 2026 22:31:30 +0100 Message-ID: <20260104213132.163904-5-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> References: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Joysticks will now fire EV_BTN for every of their buttons, even buttons that were previously ignored because they were cut off by KEY_MAX. This in turns enables joysticks to finally report buttons above 80 which was the previous limitation. Signed-off-by: Tomasz Paku=C5=82a --- drivers/hid/hid-input.c | 27 +++++++++++++++++++++------ include/linux/input.h | 2 ++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 900a6fc9813e..1c11077b1577 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -760,11 +760,15 @@ static void hidinput_configure_usage(struct hid_input= *hidinput, struct hid_fiel case HID_GD_MOUSE: case HID_GD_POINTER: code +=3D BTN_MOUSE; break; case HID_GD_JOYSTICK: - if (code <=3D 0xf) - code +=3D BTN_JOYSTICK; - else - code +=3D BTN_TRIGGER_HAPPY - 0x10; - break; + if (input->button_count >=3D INPUT_MAX_BUTTONS) + goto ignore; + + code +=3D BTN_JOYSTICK; + if (code > BTN_DEAD) + code +=3D BTN_TRIGGER_HAPPY - BTN_DEAD - 1; + if (code > KEY_MAX) + code =3D KEY_RESERVED; + break; case HID_GD_GAMEPAD: if (code <=3D 0xf) code +=3D BTN_GAMEPAD; @@ -1379,7 +1383,6 @@ static void hidinput_configure_usage(struct hid_input= *hidinput, struct hid_fiel } =20 set_bit(usage->type, input->evbit); - /* * This part is *really* controversial: * - HID aims at being generic so we should do our best to export @@ -1390,12 +1393,18 @@ static void hidinput_configure_usage(struct hid_inp= ut *hidinput, struct hid_fiel * *_MISC+N to overwrite a legitimate even, which confuses userspace * (for instance ABS_MISC + 7 is ABS_MT_SLOT, which has a different * processing) + * - Joysticks can have arbitrary number of buttons without defined + * usages. Buttons that extend beyond KEY_MAX are assigned to + * KEY_RESERVED thus deduplication must be disabled for them. * * If devices still want to use this (at their own risk), they will * have to use the quirk HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE, but * the default should be a reliable mapping. */ while (usage->code <=3D max && test_and_set_bit(usage->code, bit)) { + if (field->application =3D=3D HID_GD_JOYSTICK && usage->code =3D=3D KEY_= RESERVED) + break; + if (device->quirks & HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE) { usage->code =3D find_next_zero_bit(bit, max + 1, @@ -1455,6 +1464,12 @@ static void hidinput_configure_usage(struct hid_inpu= t *hidinput, struct hid_fiel if (usage->type =3D=3D EV_KEY) { set_bit(EV_MSC, input->evbit); set_bit(MSC_SCAN, input->mscbit); + + if (field->application =3D=3D HID_GD_JOYSTICK && + (usage->hid & HID_USAGE_PAGE) =3D=3D HID_UP_BUTTON) { + set_bit(EV_BTN, input->evbit); + ++input->button_count; + } } =20 return; diff --git a/include/linux/input.h b/include/linux/input.h index f6389de4a4d1..7f39c663fa85 100644 --- a/include/linux/input.h +++ b/include/linux/input.h @@ -214,6 +214,8 @@ struct input_dev { }; #define to_input_dev(d) container_of(d, struct input_dev, dev) =20 +#define INPUT_MAX_BUTTONS 2048 /* A sane limit of supported device buttons= */ + /* * Verify that we are in sync with input_device_id mod_devicetable.h #defi= nes */ --=20 2.52.0 From nobody Wed Jan 7 22:44:42 2026 Received: from mail-ed1-f65.google.com (mail-ed1-f65.google.com [209.85.208.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9129C2F25E1 for ; Sun, 4 Jan 2026 21:31:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562302; cv=none; b=H2w8LrAiJuisea8szn0yNcJoBpkSw2b7QczI+jU6mdxQWKCKb1vu/wJzldrSfHSR4CWsFbKjqDYvb1YvdRSh6z5pcdNOMLlNEMVM4PIxNtAfMIhmRjhV0lVQdrkgvZU2PWbUZmqN/L1JN1afJPyb53FwBNSDQx/SH4z5jTb9Koo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562302; c=relaxed/simple; bh=69vt7Qk2+H3T481tbA+iEUit9KnFrIN5kgrxdXzsY24=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=A8Axb3AyZyAu0dBf3QsQc1FXcWHlQv2DCars2gYx1S3JPsKG5uaPPuEZhEcMWbo45SLD8uEJDsZ4HkWXtA6Z2725S/nPEYbiprHCJKaziI9m/4EPTysWR+YncdyTHqKeKypvztSiYiQeFkFNi8Hn3NO3g3uuNeyorH3h4PnAysI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ew8vqAnY; arc=none smtp.client-ip=209.85.208.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ew8vqAnY" Received: by mail-ed1-f65.google.com with SMTP id 4fb4d7f45d1cf-64b9cb95009so1705402a12.1 for ; Sun, 04 Jan 2026 13:31:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767562299; x=1768167099; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iyVyOVoDpRkrPdb+Fl/hf7lVJIk2hqFvpZtQyF+zJoE=; b=Ew8vqAnY4iju3lYMSEMmcqUQoDSrBfxZebl4bDCMP8UCzS0eow7Xs9aFmRq/jlqFy+ z6J0aQasWrSV695OnWYJGvScYhYVbWxpq3XFfhkfH2bxZRNtJaK9A+frRMBpUzwPhntk BZqR2Pj4tq4Y8WxDsO9jEHy03XCq7BIey8/fQ27dHUUDMmjBj4J/fHe0E7OyMLMBZeO1 +lgkkGMNJt0IXe8vbvoS04ax1iHchKMq0Eq/OWz8v279wEq5TK885DAGUwVA1vIc120E ZzhsvfKonNfxXq7CHR8RhM2y0m3esA5VAmeAWdsNUpo6T/kHp9y4opPt49pP/q+Skb5r Uy+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767562299; x=1768167099; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iyVyOVoDpRkrPdb+Fl/hf7lVJIk2hqFvpZtQyF+zJoE=; b=k6dAR+dtiCvJ4s2se3tHw8vkrfpxYfPs02XxR/XKfB2at04jiroU+lDqwlJrZCMisE voweqadxWxsKq8O9wvo8Ercq0D4fhClrrK9nKMkW0ImEgtqx2XK/y+i4cHi0baYyYOSO P58f8jW1bEhImUzngTdegD6FlXP1M3pe0KJhb46M285a5dpcrw4jBzWwm48+SNJiMb9P vltVmeNv2+4bV4RJosso7kKrwJujn2IoflJU7LrP1Q2YvhPjXlo+HNu2hb97O4ttaKlS YxIX3eL8+joo5DCYV7g5Z21nuMFkN5FzENkzJSW2UY96+fDe9cv9/2Yk5Pn+3XZ4YHgy cE8w== X-Forwarded-Encrypted: i=1; AJvYcCXW3xwCYxq/n1pf3ckPdk+yN5Utkfaxhl7Cr5aBhCPav4MweovRKg8m3c72ltae4EELn5EQ6AtaS2La/2g=@vger.kernel.org X-Gm-Message-State: AOJu0YzbL1b9gfZW6inVZZYmQFOjdqbYCZVTqOzQu4W+k28kPHBVbQLS QMzNueyMEWaIBv3FCFAaK0BPQ+ZHIUxcd9e0s1S2n/Qf8ikISAIZKcFI X-Gm-Gg: AY/fxX6QDSAPZr2gG66CKzR2tynhBdpiuOlLk5WihUDDJCxbgBjDiZZWWjI7/kT8748 plhCjJNoJbUSfTd/o3l8w81a0/egtUmMsCwlQUQV1DuBfofCOFP5C5OnpH+sEe2PDqkwCTpi3Dq v/G1QDtz5E1bWgjx+FXKc0RUOp75cb9C/aAqodFLEykwY1oV5X33TvTGw2KPSKMA5CUuRD37d5J jY5hdsB1HzcMMGjI6WWa3r1aYevwbPMoD8ypB8g3HFsW2CfWPgF3y1PVsUXv8/PI71XnO0/KX6p XTrXV0HDRwryxm3qqgr6kB8SjZSFMMsVJm1hiT+hivtv0GZZRQRvJDynaObVc3rEvZSgVzVRBrp rfHzwIfGg49DXWhVsllU6O2ECOsrye0pKAYXbqbhd1utj/kx3fmUeitmQ/2PGygFLBB5QMTetH6 8LmuY/1niPbX4jUW1BodCq2MRJTRRCSCpEzujhYJ2+nEUyYT/72xAIhJJfOK3CeOZK X-Google-Smtp-Source: AGHT+IGakCoIAtkpX3G7Cb43Lp8uN8RojeqEyKuH05NK9zjgxJjMdsIxbnKIPtDxZRa3xmkxyc0Rog== X-Received: by 2002:a05:6402:268a:b0:640:abd5:8646 with SMTP id 4fb4d7f45d1cf-64b8edbd77bmr24808991a12.4.1767562298790; Sun, 04 Jan 2026 13:31:38 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9105a9c4sm51947772a12.12.2026.01.04.13.31.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 13:31:38 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: dmitry.torokhov@gmail.com, corbet@lwn.net, jikos@kernel.org, bentiss@kernel.org Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, vi@endrift.com, linux-kernel@altimeter.info, peter.hutterer@who-t.net Subject: [RFC PATCH 5/6] Input: Realign rest of the HID_UP_BUTTON cases Date: Sun, 4 Jan 2026 22:31:31 +0100 Message-ID: <20260104213132.163904-6-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> References: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The switch statement here had too much indentation. Signed-off-by: Tomasz Paku=C5=82a --- drivers/hid/hid-input.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 1c11077b1577..9542829de234 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -770,22 +770,22 @@ static void hidinput_configure_usage(struct hid_input= *hidinput, struct hid_fiel code =3D KEY_RESERVED; break; case HID_GD_GAMEPAD: - if (code <=3D 0xf) - code +=3D BTN_GAMEPAD; - else - code +=3D BTN_TRIGGER_HAPPY - 0x10; - break; + if (code <=3D 0xf) + code +=3D BTN_GAMEPAD; + else + code +=3D BTN_TRIGGER_HAPPY - 0x10; + break; case HID_CP_CONSUMER_CONTROL: - if (hidinput_field_in_collection(device, field, - HID_COLLECTION_NAMED_ARRAY, - HID_CP_PROGRAMMABLEBUTTONS)) { - if (code <=3D 0x1d) - code +=3D KEY_MACRO1; - else - code +=3D BTN_TRIGGER_HAPPY - 0x1e; - break; - } - fallthrough; + if (hidinput_field_in_collection(device, field, + HID_COLLECTION_NAMED_ARRAY, + HID_CP_PROGRAMMABLEBUTTONS)) { + if (code <=3D 0x1d) + code +=3D KEY_MACRO1; + else + code +=3D BTN_TRIGGER_HAPPY - 0x1e; + break; + } + fallthrough; default: switch (field->physical) { case HID_GD_MOUSE: --=20 2.52.0 From nobody Wed Jan 7 22:44:42 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6789E2F25F8 for ; Sun, 4 Jan 2026 21:31:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562303; cv=none; b=G5DxHCE3wWchXvdnipK5ivDtf+OToX4b24uEcIsFpfUICanM5W6p2WC47rf5bADlS/eid2Cpj6i1ZmQzmesNp7hbfZuZDjSEubd9tGOeOu4dYZ6+TjHPQ0WDtGwZm8TBaQs1ahSSWzUSM8Bx8jtneMVyJfYdpJUqTnbsT/ZeCRA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767562303; c=relaxed/simple; bh=HhiXa9faNhgtAxR7thDLXdlpim1uuVVNkBce7yAbcqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=PIJf5P4l0ZY9noXaqsltrKFLHNY+i8KVhRN9w0/Dop66s9CwtmyKnBkiFPOuM0OdHvo/yLcDpJFEZYqTSt1mcOCCumxDUKTE82We608tkndUDFRisxDsaJ/RryN42XIKxRXI1n1WUCB9nAscpMrv4irDjAVo0YqXmal9Cnmf35w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WaVQGtd2; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WaVQGtd2" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b7ffe26edc1so209523566b.0 for ; Sun, 04 Jan 2026 13:31:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767562300; x=1768167100; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CxrdR1+2a5RaFKpyNZz55u6IOBzBhsiBktK5vLyXD6I=; b=WaVQGtd2BvqD7vVbyF25Y76CcgG6y7jslzI9x3WGFsFRLZYKh3nA1u9NbrkpqfXaII qAkkR+fDkBpXoSXUk++eSLCnO02kLKsp9OnI30jhjCohPIlMEy44qqQFQcH/U+M1o6Yj pQim2cRP1ybmAXfG1NdEczQVfql5FT8sTLazSuTji2GPWZvMKSZNprXfYOzC/9dWTuy1 8wyyTus5/IZInJMNLz16QJS6M3PyvQFVx9X6PCPFwo0sJ5k6FpheL3GWfm3mCx/6uzlH f6Kc79KFZ6U00vDR0pENmyhFmX4AK92QJFAim5Plf5fqd8iYsYIYAQBD9ZebQP/T/loG wuEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767562300; x=1768167100; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CxrdR1+2a5RaFKpyNZz55u6IOBzBhsiBktK5vLyXD6I=; b=LHHoQ4AsORlvfq1J9/x/OGuOrMOMOEOw8/wh+iPLZC5RnV5mXhfwa+jggBJn60KHNW M7suKWQfd104aWZalQGagV3YIbFytKlTZCoZvq/E8KLf+a0JUdrB/NgGpqY3vA/dKxm6 gdiQcXhUEJy2EcioGdlLT4rWT5a0sTn0tqOPhbwWIbXO20N9uXPlRhwozWSdagw727LC 9dS1BK7+lpZ34z6WCEbkBeLGWoITF4ZKtdeckoHdRq7VATb71oQnO8hJuNgE5txGXu+5 9xu+O+TlV4bqeMCWC5Is8LZE9KVqR6oz9Jn4XR495m3G9IFSTCpgz7QoKiR+GsO3Z9RI Z05A== X-Forwarded-Encrypted: i=1; AJvYcCWOj7PTqeFZJWJyc/c0Ih75Oow04RIh/sAqUHR8iPrLOf4pZePaQ2+UwTADQES3BoWA0jmRwmUHpxS1vQk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz88FhbB+cE4uPZO6CpoPa2OQhjzL6lR4MGlcSSmyl+YM20y9ED /ccu0MiQa2CSMMopAFVEPA3B2XbUCnrhkBce2l9psZTxjX1XJi7bWCOo X-Gm-Gg: AY/fxX504oScS1g6glK0kpCkOwSHKm8VWme5Gw/wSbDiz0o6iTc8ToxY6advv7HZfzb n1E6KZvXxeLb+Co2eIbTNTkg8Ps3U1RW2FYeunfyVxYILu9n79FxI3JrUrPyD760AaO0j/DH7U1 VpGAELqxnwwh5W0/depXiRcSUz8rptaMOVUhu5wXQw7y65CgetTtrWq9nm0BiYerDMX8f9lDTvU BgfKOwOkCCBsgotEPpzuzT1RlizzroOoO0vL/c1fo6nYJwc9xWrL/80rqo7sH5BpJkU8B5ps0f+ 6MsjhetHapYAeeWzNHYNWFjlSc8X1lVhDCDhLNk8N655qS+BQFsFYYc5b9XrpYDUrP/QO0rlRa0 vmduIUC823S+Sq1hurL65qEXvpklKFHOQcNPl3tEzgyGBCUhXyjfxKdbR5LdVE3UUyUrLy2X1PQ vF6xic9KmtFJeZ65f5pCQUml0xjlNEx7QjQ3UT0/en3u6a61ll/9hxBCvf6+OnqEI1 X-Google-Smtp-Source: AGHT+IFbT/17drCJTiC1SUmz0pBoy23cOQaM3ejZxbDW7YxU7ng/yG/cBTgBBPjbLDpAH8oMLhdjsw== X-Received: by 2002:a05:6402:42c8:b0:64d:26a2:56af with SMTP id 4fb4d7f45d1cf-64d26a25be1mr25379531a12.0.1767562299676; Sun, 04 Jan 2026 13:31:39 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-64b9105a9c4sm51947772a12.12.2026.01.04.13.31.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jan 2026 13:31:39 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: dmitry.torokhov@gmail.com, corbet@lwn.net, jikos@kernel.org, bentiss@kernel.org Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, vi@endrift.com, linux-kernel@altimeter.info, peter.hutterer@who-t.net Subject: [RFC PATCH 6/6] Input: Add EVIOCGBTNCNT Date: Sun, 4 Jan 2026 22:31:32 +0100 Message-ID: <20260104213132.163904-7-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> References: <20260104213132.163904-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Allow userspace to get the button count of input devices. currently only used for Joysticks which includes Simracing and Simflight hardware. Such devices are always defined as generic joysticks. Signed-off-by: Tomasz Paku=C5=82a --- drivers/input/evdev.c | 5 +++++ include/uapi/linux/input.h | 1 + 2 files changed, 6 insertions(+) diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 90ff6be85cf4..b90dc035c0b3 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -1134,6 +1134,11 @@ static long evdev_do_ioctl(struct file *file, unsign= ed int cmd, =20 case EVIOCSKEYCODE_V2: return evdev_handle_set_keycode_v2(dev, p); + + case EVIOCGBTNCNT: + if (copy_to_user(p, &dev->button_count, sizeof(unsigned int))) + return -EFAULT; + return 0; } =20 size =3D _IOC_SIZE(cmd); diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h index 6aa703fcfcfb..3d1b17ebcdfc 100644 --- a/include/uapi/linux/input.h +++ b/include/uapi/linux/input.h @@ -174,6 +174,7 @@ struct input_mask { #define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */ #define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds= status */ #define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len) /* get all switch = states */ +#define EVIOCGBTNCNT _IOR('E', 0x1c, unsigned int) /* get button count */ =20 #define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len) /* get ev= ent bits */ #define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo) /* g= et abs value/limits */ --=20 2.52.0