Cover Letter Detail
Show a cover letter.
GET /api/covers/2218208/?format=api
{ "id": 2218208, "url": "http://patchwork.ozlabs.org/api/covers/2218208/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260331170823.72511-1-soumyajyotisarkar23@gmail.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260331170823.72511-1-soumyajyotisarkar23@gmail.com>", "list_archive_url": null, "date": "2026-03-31T17:08:18", "name": "[RFC,0/5] Add high-resolution 2D mouse wheel support to USB HID", "submitter": { "id": 91019, "url": "http://patchwork.ozlabs.org/api/people/91019/?format=api", "name": "Soumyajyotii Ssarkar", "email": "soumyajyotisarkar23@gmail.com" }, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260331170823.72511-1-soumyajyotisarkar23@gmail.com/mbox/", "series": [ { "id": 498231, "url": "http://patchwork.ozlabs.org/api/series/498231/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=498231", "date": "2026-03-31T17:08:18", "name": "Add high-resolution 2D mouse wheel support to USB HID", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498231/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2218208/comments/", "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=PNBlK0Cq;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flZMk0TNMz1y1q\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 01 Apr 2026 04:08:50 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w7cZz-0003YP-1N; Tue, 31 Mar 2026 13:08:39 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <soumyajyotisarkar23@gmail.com>)\n id 1w7cZx-0003Xw-19\n for qemu-devel@nongnu.org; Tue, 31 Mar 2026 13:08:37 -0400", "from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <soumyajyotisarkar23@gmail.com>)\n id 1w7cZv-0003B3-3L\n for qemu-devel@nongnu.org; Tue, 31 Mar 2026 13:08:36 -0400", "by mail-pf1-x443.google.com with SMTP id\n d2e1a72fcca58-82735a41920so1964844b3a.2\n for <qemu-devel@nongnu.org>; Tue, 31 Mar 2026 10:08:34 -0700 (PDT)", "from fedora ([103.2.232.250]) by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82ca843b818sm13647889b3a.6.2026.03.31.10.08.27\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 31 Mar 2026 10:08:31 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774976912; x=1775581712; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=TsPQRSmTOs83385vSVuhSH4/+UXE7/8BJmaHbeTXL/o=;\n b=PNBlK0CqKBcDfbnVwqPVRykjDzQFODo0rdqRp+h3bVQ+CCXIOsqOo0vGES9kMUPSZn\n XJoJ3IzQ+zShdDE0D4QPs3ov8fHY9HjZh8+BgGWOFEhgz14K/Z9Pzi34XJXSHLzCoxx9\n 03LV1+LP70u4VM/3/4w2mko6OU8W/5Msea9Va35MZ2YkOo8tFJRiV0MKrRnctCfwzWhl\n clUDyetRPbPwTIQjezq2Qsc1vLhhz+IrMMhKw12GJl3BVRdOudpZ6arPJr7Isoo8eNPU\n csHFiY99Z6EeADGLLEqleW6Um2URx4XvwDtw7mBL6YLE3rsgazTKHPUPwqQJCm40dUlo\n HIdA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774976912; x=1775581712;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=TsPQRSmTOs83385vSVuhSH4/+UXE7/8BJmaHbeTXL/o=;\n b=Yq1K1O0hnn5t8FLYzO5yr0PkuF1RY1Pzl25fJD+oTdxq8hyO6lmpYk9Evs/AIH973n\n o7oiVhL6ZJmqI7Nyag5Tr9gMKLWarqQhUH1urxmAUftNjK1ylXbwlqfBFCZUXnj+hj2L\n XHx5/6ywZnFDdV7NWY4n3kKsi12NIexvJHnZ4c6nQYUCH5HKRZmwJBvFFJP8U+0usduB\n IZ5MP49aApob1SF4Mk2bPjPR4zMzfRUTxZDTnmjKk7TLD+kcI9HKgEoRP5GF6e1iMNuR\n Kh+pe3Avg7/SYIo2HEniwwjcq9cgM48KYiZPFIl0olk0Sfy0u8l2izp+B8OVecaNt5sc\n e2OQ==", "X-Gm-Message-State": "AOJu0Yw9rTvonLrvoRBJh16Ttu1E6Z7Q532Heo9FRKTSpdFKlgL9kkcl\n yhW0I223W/OSZ2oZdcs3xyXD2PGOp2knJ3ayajISOPFGM9plYn2Aoa9KifQucgqn", "X-Gm-Gg": "ATEYQzzWljLnGTCbLoGnvqpUikAI5AGrr3a1aJJZf/pQXtwxdBp8DTnt3UFwN3xGoOn\n hl+rqdCg/xIrhhoVy8H7TQShK81YGVQrKD/tE7di7jp3nsfvx7+zNmX8O6RiYcVXvNQiB0WnTav\n KK7dx+Y3mm55clDFvZE87ZYDps1VEUAstM8CGeXbccLy2mm+NHJBm6Y87iMXGbKsKNZzFKjMtvN\n JgjcfPZc9Z4mBi0OLNinOH6b3jQrEfnsvL8EuJ4scx6ZwnqhOuPEthPh/h4KChstnWsFHEiqBNu\n 1ijCd96c8bzEpZTvwy7e0prJK3++WbGktU8T7YMXEGZPAion7ZOEtAMmFuytuVAtHabZmeluSbx\n om6fIHZXo+bhXSEJau2xjjNWFnYvVQQ8xZURAY/Tc+LgN1vA2/V2n9UCoaU1mqUdai4HIXjMJtT\n sozMT1NiL0hWgsse2bFlbSZy9jRvM64yKyIUeB3mKr2bhMfpOh61/xB3Rr6EZu0hN5y1DJ/1WZC\n acHPSuNea7HkN33NcZl/OKzI/nJHiSAc3W9w71Vk6Hp9gTZ88m2/00moYpY/93pr/xisOq8lg==", "X-Received": "by 2002:a05:6a00:4fc5:b0:824:9bc5:e946 with SMTP id\n d2e1a72fcca58-82ce8abd4a1mr330627b3a.46.1774976912235;\n Tue, 31 Mar 2026 10:08:32 -0700 (PDT)", "From": "Soumyajyotii Ssarkar <soumyajyotisarkar23@gmail.com>", "To": "qemu-devel@nongnu.org", "Cc": "Richard Henderson <richard.henderson@linaro.org>,\n Paolo Bonzini <pbonzini@redhat.com>,\n Soumyajyotii Ssarkar <sarkarsoumyajyoti23@gmail.com>,\n Michael Tokarev <mjt@tls.msk.ru>, Thomas Lambertz <patch@thomaslambertz.de>,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Alex Golovko <alex@browserling.com>, ShengYi Hung <aokblast@FreeBSD.org>,\n Soumyajyotii Ssarkar <soumyajyotisarkar23@gmail.com>", "Subject": "[RFC PATCH 0/5] Add high-resolution 2D mouse wheel support to USB HID", "Date": "Tue, 31 Mar 2026 22:38:18 +0530", "Message-ID": "<20260331170823.72511-1-soumyajyotisarkar23@gmail.com>", "X-Mailer": "git-send-email 2.53.0", "Content-Type": "text/plain; charset=\"utf-8\"", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2607:f8b0:4864:20::443;\n envelope-from=soumyajyotisarkar23@gmail.com; helo=mail-pf1-x443.google.com", "X-Spam_score_int": "-17", "X-Spam_score": "-1.8", "X-Spam_bar": "-", "X-Spam_report": "(-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "This RFC series adds high resolution vertical and horizontal wheel support\nto QEMU's USB HID mouse device.\n\nThe current USB HID mouse implementation only reports fixed wheel deltas and\ndoes not support horizontal scrolling.\nModern touchpads and trackpoints can generate finer grained wheel movement\nand simultaneous horizontal & vertical scrolling,\nhowever guests currently cannot make use of these capabilities.\n\nWindows Vista onward their has been support for\nMicrosoft's high resolution wheel protocol, including resolution multipliers\nand horizontal scrolling via AC Pan usage.\n\nThis series updates the USB HID mouse descriptor and report format to support:\n- High-resolution vertical wheel events\n- Horizontal wheel / AC Pan events\n- Resolution multiplier feature reports\n- Simultaneous vertical and horizontal scrolling\n- Boot protocol compatibility\nThe enhanced report protocol uses Report ID 1 for pointer input reports and\nReport ID 2 for wheel resolution feature reports. Moreover, vertical wheel scaling and\nhorizontal pan scaling are preserved across VM migration using residual state.\n\nWith this change, guests can receive smaller wheel deltas\nsuch as 25 units instead of only legacy 120-unit wheel notches,\nresulting in smoother scrolling behavior in Windows and Linux guests.\n\nTesting was performed using Windows 10 guest and Microsoft's wheel event viewer:\nhttps://domeventviewer.com/wheel-event-viewer.html\n\nObserved behavior:\n- Without patch: wheel delta values appear as coarse 120-unit steps\n- With patch: wheel delta values appear as smaller increments\n- Horizontal scrolling events are reported correctly\n\nReference documentation:\nhttps://download.microsoft.com/download/b/d/1/bd1f7ef4-7d72-419e-bc5c-9f79ad7bb66e/wheel.docx\n\nSigned-off-by: Soumyajyotii Ssarkar <soumyajyotisarkar23@gmail.com>\n\nSoumyajyotii Ssarkar (5):\n input/hid: add horizontal pan to pointer event path\n usb/hid: add enhanced wheel mouse report descriptor and packet size\n input/hid: emit protocol aware mouse reports with pan support\n usb/hid: handle mouse feature report for wheel/pan multipliers\n input/hid: apply multiplier scaling with residual accumulation\n\n hw/input/hid.c | 117 ++++++++++++++++++++++---\n hw/usb/dev-hid.c | 191 ++++++++++++++++++++++++++++++++---------\n include/hw/input/hid.h | 5 ++\n 3 files changed, 262 insertions(+), 51 deletions(-)\n\n--\n2.53.0" }