From 5a745a21342e67be732a4ddc6de086cd29d9ec5a Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Tue, 12 Oct 2004 10:00:48 +0000 Subject: [PATCH] Applied a patch by BiPolar, which fixes the second wheel handling (can't test as I don't have a two wheeled mouse). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9298 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/arch/x86/ps2mouse/ps2mouse.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/add-ons/kernel/drivers/arch/x86/ps2mouse/ps2mouse.c b/src/add-ons/kernel/drivers/arch/x86/ps2mouse/ps2mouse.c index 47638bfb0f..637c17664f 100644 --- a/src/add-ons/kernel/drivers/arch/x86/ps2mouse/ps2mouse.c +++ b/src/add-ons/kernel/drivers/arch/x86/ps2mouse/ps2mouse.c @@ -323,14 +323,12 @@ ps2_packet_to_movement(uint8 packet[], mouse_movement *pos) sButtonsState = buttons; if (sPacketSize == PS2_PACKET_INTELLIMOUSE) { - wheel_ydelta = ((packet[3] & 0x8) ? 0xFF : 0) | (packet[3] & 0x7); - - // Two wheeled mice use this nice trick: - // they report -2 or +2 when the second wheel moved - if (wheel_ydelta == -2 || wheel_ydelta == 2) { - wheel_xdelta = wheel_ydelta; - wheel_ydelta = 0; - } + switch (packet[3] & 0x0F) { + case 0x01: wheel_ydelta = +1; break; // wheel 1 down + case 0x0F: wheel_ydelta = -1; break; // wheel 1 up + case 0x02: wheel_xdelta = +1; break; // wheel 2 down + case 0x0E: wheel_xdelta = -1; break; // wheel 2 up + } } if (pos) {