From nobody Fri Jan 9 00:46:35 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