From patchwork Mon Jul 30 23:44:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Colenbrander, Roderick" X-Patchwork-Id: 10549711 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DABC7174A for ; Mon, 30 Jul 2018 23:48:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BB82A2A88D for ; Mon, 30 Jul 2018 23:48:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A8B1E2A97E; Mon, 30 Jul 2018 23:48:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D8AE72A88D for ; Mon, 30 Jul 2018 23:48:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729477AbeGaB0A (ORCPT ); Mon, 30 Jul 2018 21:26:00 -0400 Received: from mail-co1nam03on0126.outbound.protection.outlook.com ([104.47.40.126]:45236 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731633AbeGaB0A (ORCPT ); Mon, 30 Jul 2018 21:26:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Sony.onmicrosoft.com; s=selector1-Sony-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w2melNrOSQMXRva96dJ1+aJvLLv53YZ3P+JM460t8t0=; b=VV+hsygHFSOkklTHnRPB0zX3raoJmODhkseCJBqbychX4skYSeB+dmmtMhJbfy08fgM3Sy6fOmM8+sVcpdxMUph0CKlNeZBvVchaBBkQnAJW9O8VbX1fIcGuH9CrOdHFB4QmzfTtlBFLQku/7lhtDyo/7Jn3d9NkpAVr8wbJBRk= Received: from CY4PR13CA0096.namprd13.prod.outlook.com (2603:10b6:903:152::34) by DM5PR13MB1418.namprd13.prod.outlook.com (2603:10b6:3:123::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1017.10; Mon, 30 Jul 2018 23:44:30 +0000 Received: from SN1NAM02FT057.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::201) by CY4PR13CA0096.outlook.office365.com (2603:10b6:903:152::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1017.8 via Frontend Transport; Mon, 30 Jul 2018 23:44:30 +0000 Authentication-Results: spf=permerror (sender IP is 160.33.194.228) smtp.mailfrom=sony.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=sony.com; Received-SPF: PermError (protection.outlook.com: domain of sony.com used an invalid SPF mechanism) Received: from usculsndmail01v.am.sony.com (160.33.194.228) by SN1NAM02FT057.mail.protection.outlook.com (10.152.73.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.1038.3 via Frontend Transport; Mon, 30 Jul 2018 23:44:29 +0000 Received: from usculsndmail14v.am.sony.com (usculsndmail14v.am.sony.com [146.215.230.105]) by usculsndmail01v.am.sony.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id w6UNiSxK016837; Mon, 30 Jul 2018 23:44:28 GMT Received: from USCULXHUB01V.am.sony.com (us-east-xims.am.sony.com [146.215.231.15]) by usculsndmail14v.am.sony.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id w6UNiSul010323; Mon, 30 Jul 2018 23:44:28 GMT Received: from USCULXMSG13.am.sony.com ([146.215.231.78]) by USCULXHUB01V.am.sony.com ([146.215.231.15]) with mapi id 14.03.0382.000; Mon, 30 Jul 2018 19:44:28 -0400 From: To: , Subject: Proposal to support pressure sensitive "analog" buttons in evdev Thread-Topic: Proposal to support pressure sensitive "analog" buttons in evdev Thread-Index: AdQoX0B7Ci8tCjO0T5OH++BQDhpFqw== Date: Mon, 30 Jul 2018 23:44:27 +0000 Message-ID: <1DD62093774CEE42AFC16E785A1088049E38CBF6@USCULXMSG13.am.sony.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [146.215.228.6] MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:160.33.194.228;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10019020)(346002)(39860400002)(376002)(396003)(136003)(2980300002)(448002)(199004)(189003)(53754006)(6116002)(2906002)(2876002)(8676002)(23726003)(8746002)(97756001)(8936002)(3846002)(85326001)(478600001)(50466002)(561944003)(33656002)(5660300001)(72206003)(7696005)(66066001)(486006)(246002)(102836004)(86152003)(55016002)(26005)(2900100001)(46406003)(106466001)(305945005)(2920100001)(186003)(336012)(476003)(426003)(126002)(110136005)(14444005)(7736002)(86362001)(356003)(55846006)(316002)(47776003)(956004)(5001870100001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR13MB1418;H:usculsndmail01v.am.sony.com;FPR:;SPF:PermError;LANG:en;PTR:mail.sonyusa.com,mail01.sonyusa.com;A:1;MX:1; X-Microsoft-Exchange-Diagnostics: 1;SN1NAM02FT057;1:1jgCtgGbPPI2ptcVAM2qsR/TFyafI0ZNdYPCEyVz1H8x4eyBMrsMRTBjsn7rBAfIcINlq2feJVG9am+k8u7S7Iz2IbWLT2ymlyrSbBZbFdnDw41WCGBKSS5JLsThf0MB X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8df21057-2a4f-46f2-b1ce-08d5f6766513 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7193020);SRVR:DM5PR13MB1418; X-Microsoft-Exchange-Diagnostics: 1;DM5PR13MB1418;3:xVvyw0+1uH/MjpYWF0kDofck4DwwhQTaYrnLpHrcK5vjx6CiuyfbAKW1+DbvuMdgvBbQA2JmMVTmqkOaGUHGFvxKnPZtmsm1Pv+fSMHrBVgSeL8ILILXDzIEioIPzpjCtsJjjjc3ZZ0cJWCZOqQJkeG2pujoQ+Zr9+CzdDBOmPRBlyXA8kc4noaV0b1fjli9NJstPFq3jiy8wD/HPExdiTjJzkvhwhWEPQtC6UH4MC/x/HoyccjBXAhF+WqW2JyVrSthkEmcH74bJxRhDwVDvCnDuVuW/voWTZsFJWCdBlq4jdHxzdaQLRzqDpIEc6aC09+vbntYJxfbcUM56DB0PU1LhzfrO74UB3ihmJG9lS8=;25:HB4IglnB8PHDaOLEvAQRe2sHA6RI2ZUeDvk6GO0eZnnFDi7p7CfIXfn8ttyK4tkZd5/J8C9PHFpje8KCATyDzDigaEdoi3Stt5W0GELrSk0rTZrxB8Yu04J6tJHdNcWUeR1nDQKrI6yhfHCetsBobpQdOBeUQDEW6lHdP4ONlaoG4pZhOUoo4A+1h5WlEWrxv0zk0EyF5zVrK5zKroIg/oEGPYMo33SrSeWiMCe+owcDrcTNrQwasHeBFCjTAy1wwgsTqMrS78QE9/CHqiGmq8ANlU7uWlXiJ5BEI7IvxT6N0uqKcRZDchLQg58kveSwc7bXQET+gdzbFNB/oGrVCQ== X-MS-TrafficTypeDiagnostic: DM5PR13MB1418: X-Microsoft-Exchange-Diagnostics: 1;DM5PR13MB1418;31:H2YlF+TtpGnEVLDmMfr/zKZ0BoJdcOv5fOxqoPgVhw7XTylMEJAgNSF7Tp8A/uhrT+CyXDHF3Ubx1dTZxS7vC3erUO3wWB1qOBHbra+bMdK+i5QOONqMRalefGLkL/8g/fFdJuyAalIVyeEXMwtgpYaSmF4jW7IUx0kwhO/GCLrzFSSRXpGRez2oSsPYAkXL7nDOkZOfrFfgf6+o2o6ySuuoYFplrLXk3uZ/IFAmmKQ=;20:cKAoWSngf2Tp01CR/y/lRu6XIfNdn/RUjRzwsO+ow25iakLfdf7phY3EvtEwW1oMiAuDEemwSwOQLBasYvyfclwlb3RGSMAZue8SKKVjBSZP6foEM7luy/znx96VAY+pg5z6RHgSyRSQ4S0LlscBc1344eLCXUwtXAZlsQVACgPbFHP8B98vINgAW2f6jODIY8Np2CPk2Dw3VZRmVjpVd2Bi4BZyiet6aQXf7S6+18BUECCYKiSFaz/pM2YZPf0o8nAyqy7W09gxYrb7SC3V28ojDN1scMavf1mKYLS2I4hQ+thTNKJ/jd+OMHnYS7wH7zQWcUIB5zCs63OeNRjrDC/3sQSlUaz0Lk88LfCXybV/pN3EqelCQSGWKKU3XxwFz8WiHqF4F/Blwu52DEQb4Q5cRKSdf4muvBFkoIsdzDk+kCH8Geo7DkayA8kBISbVXRT+CKfS47cfbdY8zBcs4+DoKwkHP97rDBMTiIyikYMGXih/ZiaLwlcvnBSNbZEo X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231311)(11241501184)(944501410)(52105095)(93006095)(93003095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016);SRVR:DM5PR13MB1418;BCL:0;PCL:0;RULEID:;SRVR:DM5PR13MB1418; X-Microsoft-Exchange-Diagnostics: 1;DM5PR13MB1418;4:3XXeYz0GlWgacZq4STVia2c2e0UvCRg/1De5LzXuxCK+eIQPfEi7fE+gw3ZEov7i5YE39XS935lk4lS9R+P/OZUuGVSGLVQcX7n2NQhmxKtWENBqSyrXGP26DexJPIadrVEusBKQR8WMEnQZwO7Y0cPJms92VNfOK8RI69LU3hQnLaeRwIcFLcgASmmJ1sx3I7iMJucvywJ1qK5FNB/XzJXY40laolPMSBTDDwbyYtiUeNJnnNSMxGbbwrXkcTFMYUjjGs6bPpHoQUfNqloxw8/f/BUYFi5PjaZcx1+Ia04G4epchnHopQLVZJVoosbD X-Forefront-PRVS: 0749DC2CE6 X-Microsoft-Exchange-Diagnostics: 1;DM5PR13MB1418;23:6HCNV7eg6+UfKww4d4RiukmPLUv+r0h9fjNI5SDFqz4TDdAqlBrp1AYaMHo2+CQdioq3nPj6ztQaU+QOGsKkoKaimmAnyo5hR6AO9p9hB2gQ2/aD+66Pcr9hgNvSTPkHv4g4BlOsuImxiRN93jl2MFblE6BgAis0Q+tAVnvyG5SUXjlpfRaWmf01von2he1kGgLoQeaTi+KtotSNiUXrd6V4mhzTTionUa9hD6+WzV66eI3KSaezPcLl1ClwKayoi+GdchHA+rpmmsg+Wh5D7GodOIDGqhniR1EmvopM7a8IvEZbLtpK6bvMUYor+3H6Q6CrIko37UfF9Pu4PGpnKiwXbKJ4RtqaYza+okHwRTH/FOj2DpHtutFHtUPH0TVlQAdenuA5iX3Ibm3nQ4IXxzA8v5/nATyugZbaM0Fc/GlR7Icz69YF5vnbEk+db3FdVjhX3mGm3/LtFfOSxJoTNfkbbAmNV0Hv5Ps0zyaJ+mQBUG7dlRckHQkcisPWwfA1aWiUphCTBoX3rbem82Syi/2sFGykQAJmMlQwlrUQXM5iKMUgV5gOyYjlekbJpni1KAD8fPkCk5PgdZHaEx3+poH+mXotYLcXyQGvq5TJQEnRZpwmTIrqaLjHEP1lH6QfQLLjkXQEA0K78GItOnl6RvIw1XfVFNnhHJ8YfPviRZXQJum4ObfElER8Db9cRmblpmdyREWbjKsGzSKA962J9R2nHZYc1BQ05XJA1TvQsOmegRMXliZjsN9fZ5m//MVLqnjmzlOmIxu83duYXQcg2zaRWjUpOTY9S8fwcKkNWSYi5IvKJoTwQHwfCecnnhFVMFpta548FWWnN9L3SM6a0QSWNtmdFVMvlN8vPioyOAFOCAbkA+cBsIMRcSo2n9jPGBk4l3fPkD36Qh+bEKVJ2nBbA8e3N0EVLuwPRh0iWgx0EcFuVHsHaZ67qqIGai588aaUTlXXUaMKwNc6nBLD9CUxeVBi4bgzxS0VOgYV+oDpczLgpF4l6Lrb/nYiA6m1X7iLMNQVPx8jjJBvAzLf4zMzHv5d+HlDQwL+N5sYKWsvodQwwVeYqGt6WXIlZFhIXyQqxFXUfaO9KLywfLRqTJhhlcEso7iU7yx2Y/wvX8ebt3JmsG3m/EkOgqXZVyBvgBSANVX4hvwkXntvewnV2kcbAtMkAh8EnAiYlFkTUDq28xS8fB/zJuqkpnw5LP9R X-Microsoft-Antispam-Message-Info: qTNN6V7T2CpJQGgcTKbj1WOjK+tVZyvJMY3V8+ncEXBe8m+VXd3BhtnExzE+UJT5flJ0KQ8tMe65DeSJB2f8LKZHmPUG3Sf7Hx67LB4KhmCdR5yL2Yn1b00rlbm31Bthoe6cDQfkhcp2rZL7kNUqt767/TLxpVaY5/OysfjkUgRRLuX8N5gWwp7zhpc9v/r15AkB9oSu3oDTC8jaforwayrm688UrItEvPTjY9sxidRjsNJEn2UI+YQutNWCwXXElsH1td8UfWTbijv68EeJWLNx42KYoIPSgKBVfovN6QTMs3kAxXT9hbPKAzt2qq3MvkjI3Vt0Uny8ZaD6XJZU2201jSqZQzqOY7VHZ+FMF8c= X-Microsoft-Exchange-Diagnostics: 1;DM5PR13MB1418;6:IFBMPyz6J5lmocagY+oGKhE9Z+DE9WZHIqEsY/cfjBRITCKw5Hl9CPHjMzBJLuXGvfq3bUiKh/zxDGqyNCDo6mhm8H6+awLkRRPow6AKse0CYkJSBKkAFNlEMLlBr3IrnYJM3XLZO8GIUZVg2FRu1rqwfhn75ZXjo+6IWlNx0JFk54sPanmNL1mgXbzvIi9+b/jKiff+KpuQxwoxikeCdRCof8UzEDmLR0xFjAqKX9Z1aVOy2VIzi7XFh34jkSSzTld/pFOK9ed3zunWbbKIRv71aIjNuRWdlFvbiKMogiygUA9OI4EjKxVsgoxFrnVvad8e2iovwqnkuzYdbRzmnTVs0TVr84pyJdDE96r9vUx7yAvn06yBTCD+kBrhFKeRwnDBPdxrqJCWXIEkvwv7QWHh+3piKsoVkzHyGIPodTpFVP3yHSeK+jDYzW+TTk/R/HH3HWbn00l1Er4imKwSPw==;5:cOBSJPHTkY216krpYcH8JsE3aSl/TkWouvzdRiyw99jzrO/BlhUvzZPXeWKyxArDy2NRUy8j5PnU3Z7NGfgYFUAKZdlu9Ae0N3y6o3czgBa7moCcvE99YFN5yRquHnkGGmkR9EKlLvW8N4oNnnmMo0tjyOIYgiX/BQHwBFdZhWc=;7:6Pe4PUOEJH4YT344HufKuq2ntlbuXmcUuYx23TgV6aVuyigYC6YG3N+U0jxCZckE6c0I47QAGND+fH2rT/6jchTDnoJEjudCOqbV+RvdovnxDgGxL+57lQzYqLiTAbM35T69TcK+FSkrVTD+dEaRVegi1YnqN5ZBL9N1M5suUgMbmTvN38u4S0iauAGUdfGh2v6KTqfSVhzyQXhaCX50Ulltwasm6Z2synNf2hDYEWltYtQI/nUSqtgn+YgYqzLo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jul 2018 23:44:29.6406 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8df21057-2a4f-46f2-b1ce-08d5f6766513 X-MS-Exchange-CrossTenant-Id: 66c65d8a-9158-4521-a2d8-664963db48e4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=66c65d8a-9158-4521-a2d8-664963db48e4;Ip=[160.33.194.228];Helo=[usculsndmail01v.am.sony.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR13MB1418 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hi all, I would like to share a proposal to extend evdev with support for pressure sensitive "analog" buttons. It is a feature common on gaming peripherals (arcade sticks, gamepads, wii guitar) as well now on analog keyboards such as Wooting One / Two keyboards on which every button is both analog and digital (so ~100 analog keys). These devices are difficult to support using the existing evdev API. The problem is the EV_KEY event type was meant for digital keys, whereas the EV_ABS could be used for this purpose except that it has reached its axes limit due to the EVIOCGABS/SABS limitation of 0x40. The proposal is to add a new event type "EV_PSR" to evdev to describe pressure sensitive keys. Keys reported to this mechanism can report analog values. Often devices also report a digital value for the same button, so EV_PSR analog keys can have a matching digital EV_KEY. For this reason, we suggest to share key codes. (This is up for debate of course to tie both together like this.) Pressure sensitive keys, have similarities with regular absolute axes as they have min/max values and probably fuzz makes sense as well. It could be said we should extend ABS like David Herrmann proposed in his ABS2 proposal a while ago and remove the EVIOCGABS/SABS limitations. This is an initial proposal to address limitations in evdev to improve device support in existing drivers such as hid-sony, hid-betopff, psxpad-spi, hid-wii and probably others as well as new devices such as Wooting keyboards Thanks, Roderick Colenbrander --- Documentation/input/event-codes.rst | 21 +++++++++++++++++++++ include/uapi/linux/input-event-codes.h | 1 + include/uapi/linux/input.h | 14 ++++++++++++++ 3 files changed, 36 insertions(+) settings */ @@ -232,6 +243,9 @@ struct input_mask { */ #define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */ +#define EVIOCGPSR _IOR('E', 0x94, struct input_psrinfo) /* get psr value/limits */ +#define EVIOCSPSR _IOW('E', 0x95, struct input_psrinfo) /* set psr value/limits */ + #define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */ /* diff --git a/Documentation/input/event-codes.rst b/Documentation/input/event-codes.rst index a8c0873beb95..846562d4db4b 100644 --- a/Documentation/input/event-codes.rst +++ b/Documentation/input/event-codes.rst @@ -41,6 +41,11 @@ Codes section for details on valid codes for each type. - Used to describe state changes of keyboards, buttons, or other key-like devices. +* EV_PSR: + + - Used to describe pressure sensitive 'analog' buttons, e.g. analog buttons + on arcade sticks, gamepads or keyboards. + * EV_REL: - Used to describe relative axis value changes, e.g. moving the mouse 5 units @@ -177,6 +182,22 @@ a value of 1 in the same synchronization frame. This usage is deprecated. Note: In multitouch drivers, the input_mt_report_finger_count() function should be used to emit these codes. Please see multi-touch-protocol.txt for details. +EV_PSR +------ + +EV_PSR events describe absolute changes in a key press-like event. It is used +for devices reporting pressure senstive / analog key presses. These events +can't be described through EV_KEY as it is a digital only interface. + +Pressure senstive keys can be found on gaming devices, keyboards and other devices. +These devices often report both digital and pressure sensitive events for a given +key. For this reason, the KEY_ and BTN_ codes as defined for EV_KEY +are reused. A device supporting digital and pressure sensitive events for the same +key, should use the same key code across EV_KEY and EV_PSR. + +The value range and resolution for a pressure sensitive button can be obtained +through EVIOCGPRS. + EV_REL ------ diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h index 53fbae27b280..d142498fc64c 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -41,6 +41,7 @@ #define EV_ABS 0x03 #define EV_MSC 0x04 #define EV_SW 0x05 +#define EV_PSR 0x06 #define EV_LED 0x11 #define EV_SND 0x12 #define EV_REP 0x14 diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h index 7288a7c573cc..f5ce2abde800 100644 --- a/include/uapi/linux/input.h +++ b/include/uapi/linux/input.h @@ -121,6 +121,17 @@ struct input_mask { __u64 codes_ptr; }; + +/** + * struct input_psrinfo - used by EVIOCGPRS/EVIOSPRS ioctls. + * @code: pressure sensitive key to query. + * @info: value/limits for this key. + */ +struct input_psrinfo { + __u16 code; + struct input_absinfo info; //should this be its own psr specfic struct?? +}; + #define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ #define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */ #define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat