Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp3336910pxb; Wed, 14 Apr 2021 03:09:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJykFEG59d5WTxP2gE8YbsnpKuCP6Hj/q5MbZsWkESrVlv5iMuEflyIcFlXC1M05n7608CX2 X-Received: by 2002:a17:90a:7e8f:: with SMTP id j15mr2769201pjl.71.1618394958828; Wed, 14 Apr 2021 03:09:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618394958; cv=none; d=google.com; s=arc-20160816; b=ktGuAV+V5A/vgNsUnX0DqHpHBMyHJVOsWxCLtzVz7zMpSWrWrNIOsk9mJCpdKpxEKZ a/EYx7eeZyppcgVeXVbwvGW+9QiY3i4H3ykK3fDagajGDd1Y1hALzW2q2293G+LFsZCE X+mwXkFS/lTDoQlj4XDb7Eq0sQaNTU3Hwyhmwa4VCQtk5Dh+2mW0wUR7r2y9gXKEKAcp nYubHNCTiLazoObcUFcafjGpUDpmS89FxmkVp/TtyllN/kZ7WnFs80tlNTY6UVTUqUPk rBuhkP5nPGBgevziK9BKWazaeMYBNoNmK4QVti2PNkNn2xYak/K9nwp+BHGUpBr/dZ82 HqTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :dkim-signature; bh=QUa/z4U+xYp/G6ZwVdnUBL+VTHMhfaT1zjq2fxbj/7Q=; b=eMdex6jvR17OA0coUDkJz3VVCRrSjLlmspZ1EJDkEACg+0yZLJsPVrDAndhDQLh+4B vaaMRabrVLf4ZAyEtuplGSiKpuhowfWzetAaM7MrY+7V7muqQ2tSsW1dpOXCqxe2mQgN 2wjYBKLM5jfsRDhktapa+sjJjykMM2ee33RpMAz62rxtqz7ODMdG9ZD3afobggr+i1iw GKkAg/GSnD3VaC9s4yDRD4jFvgs3cMyZ6lzRAzJAs+hkgBvA+sCvj3QDXzyHAWcdk3jo A+F0mjsSbbTOa2RGNmCdw+kWAOt9A+Aau9dmO63aCoEdWH0+xzGBU/Kberb/9JAzFFGR YlFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=vAdefYf5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b2si6532494plh.76.2021.04.14.03.09.04; Wed, 14 Apr 2021 03:09:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=vAdefYf5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233127AbhDNCMa (ORCPT + 99 others); Tue, 13 Apr 2021 22:12:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230293AbhDNCM3 (ORCPT ); Tue, 13 Apr 2021 22:12:29 -0400 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30B0CC061756 for ; Tue, 13 Apr 2021 19:12:09 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id t25-20020a62ea190000b0290229c92857beso218388pfh.21 for ; Tue, 13 Apr 2021 19:12:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=QUa/z4U+xYp/G6ZwVdnUBL+VTHMhfaT1zjq2fxbj/7Q=; b=vAdefYf5Sh47eXDz0HifaA6qLGGbvsWRdAzn6yHn2k4XUW7KUw+JfcfJRvE8P//crG Sgmp7y8ekRsm5ikghQ6lStVWvSR0wwmfgeD53kXUvvMCVZrkl4MiXg1O/rGz5Z5QKEP8 AdNnTpT8aD2+aZgH14j1GOl0gMRP0oSzlHTvI4vQcrVYIhw8qTyrefxC5fdqgNGy1vh3 d+37XRsWViJ1zbhq1KcE58PFwS+uLCo88C1SXNszjtpgPE4x+AV4uNV0qnDzGYWdGWXW LVhbTvIFLMlfE10wBzbmGvI7cQNAO1JJNo8u0Qx0oxgPgrOcR1TOBIl9M2AYE2s/Zqns NWIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=QUa/z4U+xYp/G6ZwVdnUBL+VTHMhfaT1zjq2fxbj/7Q=; b=XWoUh3Y+TnvmAZyoc/J3dWwMMXcXjzPfsLL4BKgTfmtIJJaKkk0H0NUZ6L4+Pbl2Xf GGzeVugtSdzhRvQyNKuJlwsxdZvg25WouJVGxf0cStXuEWGH5ffKkZ8NpoJ441uXD8lO DCrCzHQqJ9EfieXn2hWPwi/+11sHNRQzbywra+QDOuV/UVKtcGM3MajHDqUWBliSW9cT zDRBihyQw27FCVMTz4NE4K96dvJyxf/iYYMLTk3cMHNl+DNn8K0C957n9xjydAENFKgV K1hUvi3x6DpdALoqc7S6Eh+rbjhiT70dbGIx70s/AOBptdN61XxW9tk7npD8ZQywUjbn 34JA== X-Gm-Message-State: AOAM533QPauvLK8B6PbxTo8OpG60zLPXW6DJ9HGEzk/ZqG+gtlKRdQIZ GLFYhnES+OhiDx1UjxbMtjj6D3+U X-Received: from lzye2.c.googlers.com ([fda3:e722:ac3:10:24:72f4:c0a8:6713]) (user=lzye job=sendgmr) by 2002:a17:90b:e98:: with SMTP id fv24mr135137pjb.1.1618366328195; Tue, 13 Apr 2021 19:12:08 -0700 (PDT) Date: Wed, 14 Apr 2021 02:12:01 +0000 Message-Id: <20210414021201.2462114-1-lzye@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.1.295.g9ea45b61b8-goog Subject: [PATCH] [v5] Input: Add "Select" button to Microsoft Xbox One controller. From: Chris Ye To: "=?UTF-8?q?=C5=81ukasz=20Patron?=" , Benjamin Valentin , Chris Ye , Lee Jones , "=?UTF-8?q?Olivier=20Cr=C3=AAte?=" , Sanjay Govind , Andrzej Pietrasiewicz Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, trivial@kernel.org, kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add "Select" button input capability and input event mapping for Microsoft Xbox One controller. From product site this is also referred as "Share" button. Fixed Microsoft Xbox One controller select button not working under USB connection. Signed-off-by: Chris Ye --- drivers/input/joystick/xpad.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 9f0d07dcbf06..cfbf1747b205 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -79,6 +79,7 @@ #define MAP_DPAD_TO_BUTTONS (1 << 0) #define MAP_TRIGGERS_TO_BUTTONS (1 << 1) #define MAP_STICKS_TO_NULL (1 << 2) +#define MAP_SELECT_BUTTON (1 << 3) #define DANCEPAD_MAP_CONFIG (MAP_DPAD_TO_BUTTONS | \ MAP_TRIGGERS_TO_BUTTONS | MAP_STICKS_TO_NULL) @@ -130,6 +131,7 @@ static const struct xpad_device { { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, XTYPE_XBOXONE }, { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, + { 0x045e, 0x0b12, "Microsoft Xbox One X pad", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 }, { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 }, { 0x046d, 0xc21f, "Logitech Gamepad F710", 0, XTYPE_XBOX360 }, @@ -862,6 +864,8 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char /* menu/view buttons */ input_report_key(dev, BTN_START, data[4] & 0x04); input_report_key(dev, BTN_SELECT, data[4] & 0x08); + if (xpad->mapping & MAP_SELECT_BUTTON) + input_report_key(dev, KEY_RECORD, data[22] & 0x01); /* buttons A,B,X,Y */ input_report_key(dev, BTN_A, data[4] & 0x10); @@ -1672,6 +1676,8 @@ static int xpad_init_input(struct usb_xpad *xpad) xpad->xtype == XTYPE_XBOXONE) { for (i = 0; xpad360_btn[i] >= 0; i++) input_set_capability(input_dev, EV_KEY, xpad360_btn[i]); + if (xpad->mapping & MAP_SELECT_BUTTON) + input_set_capability(input_dev, EV_KEY, KEY_RECORD); } else { for (i = 0; xpad_btn[i] >= 0; i++) input_set_capability(input_dev, EV_KEY, xpad_btn[i]); -- 2.31.1.295.g9ea45b61b8-goog