maruohon / litematica

A modern client-side schematic mod for Minecraft
GNU Lesser General Public License v3.0
696 stars 200 forks source link

MacOS mouse scrolling sensitivity issue #370

Open MaxLevs opened 3 years ago

MaxLevs commented 3 years ago

Minecraft version 1.17

Mod version and malilib version Screenshot 2021-06-26 at 23 28 10 Screenshot 2021-06-26 at 23 29 26

OS Version MacOS 11.4 Big Sur

Bug description Tool mode scrolling is too fast. When I try to change mode to a next one and scroll only one wheel position it moves several modes at ones (and maybe several mode cycles). It's common problem for mouse scrolling on MacOS in this game BUT minecraft has ESC > Controll > Mouse settings > Scroll Sensitivity that fix this type of behaviour. Can you use this configuration for your mod too to fix scrolling?

maruohon commented 3 years ago

I need to look into how this works or how the vanilla workaround for this works.

The fix will need to be in malilib, since it handles all the inputs and then calls the registered hooks, such as Litematica's mouse input handling method. Once I do some changes for this, I'll need people who are using MacOS and are having this issue to test if the changes work... No idea yet when this might be, but I'm guessing it should happen as part of the rewrites in 1.12.2 that are happening atm.

globau commented 3 years ago

Here's a tested matlilib patch that'll make it honour the GUI settings:

diff -ru a/src/main/java/fi/dy/masa/malilib/gui/widgets/WidgetListBase.java b/src/main/java/fi/dy/masa/malilib/gui/widgets/WidgetListBase.java
--- a/src/main/java/fi/dy/masa/malilib/gui/widgets/WidgetListBase.java  2021-07-11 14:50:33.000000000 +0800
+++ b/src/main/java/fi/dy/masa/malilib/gui/widgets/WidgetListBase.java  2021-07-11 17:24:38.000000000 +0800
@@ -8,6 +8,7 @@
 import java.util.List;
 import java.util.Set;
 import javax.annotation.Nullable;
+import net.minecraft.client.MinecraftClient;
 import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.util.math.MathHelper;
 import fi.dy.masa.malilib.gui.GuiBase;
@@ -133,6 +134,14 @@
     @Override
     public boolean onMouseScrolled(int mouseX, int mouseY, double mouseWheelDelta)
     {
+        // Adjust scroll delta as per Mouse Sensitivity options
+        MinecraftClient mc = MinecraftClient.getInstance();
+        mouseWheelDelta = (
+            mc.options.discreteMouseScroll
+                ? Math.signum(mouseWheelDelta)
+                : mouseWheelDelta
+        ) * mc.options.mouseWheelSensitivity;
+
         if (super.onMouseScrolled(mouseX, mouseY, mouseWheelDelta))
         {
             return true;

While this helps and uses the same logic applies for in-game scrolling, it doesn't match Minecraft's GUI. With the default mouse sensitivity settings Minecraft's scrollable widgets scroll at a reasonable (ie. slow) speed, while in-game scrolling (eg. the active hotbar item) is way too fast. An ideal fix for this issue would be to not require scroll speed adjustment for GUI scrolling; I'm still trying to find how that happens in vanilla's UI.

In any event let me know if you want this as a PR on malilib.

I'll need people who are using MacOS

I'm happy to help test if required.

maruohon commented 3 years ago

@globau Could you use this version: https://masa.dy.fi/tmp/minecraft/mods/misc_test_versions/malilib-fabric-1.17.1-0.10.0-dev.23%2Bmousedebug.1.jar and then go to A + C -> Debug and enable mouseScrollDebug.

Then (just in-game) scroll up and down both slowly one by one and then separately as a fast scroll movement, and label those for example with a chat message. And copy the output from the game console/log.

For example on Win 10 I get this, where all the initial y-offsets LWJGL provides seem to be either 1.0 or -1.0 already:

[15:36:16] [Server thread/INFO] (Minecraft) <masa_> scrolling up one-by-one
[15:36:16] [Render thread/INFO] (Minecraft) [CHAT] [15:36:16] <masa_> scrolling up one-by-one
[15:36:18] [Render thread/INFO] (malilib) time: 7E61, tick: A908 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:18] [Render thread/INFO] (malilib) time: 81A1, tick: A918 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:19] [Render thread/INFO] (malilib) time: 8468, tick: A926 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:20] [Render thread/INFO] (malilib) time: 8714, tick: A934 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:27] [Server thread/INFO] (Minecraft) <masa_> scrolling down one-by-one
[15:36:27] [Render thread/INFO] (Minecraft) [CHAT] [15:36:27] <masa_> scrolling down one-by-one
[15:36:28] [Render thread/INFO] (malilib) time: A79E, tick: A9DB - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:29] [Render thread/INFO] (malilib) time: AA86, tick: A9EA - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:30] [Render thread/INFO] (malilib) time: AD01, tick: A9F6 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:30] [Render thread/INFO] (malilib) time: AFBD, tick: AA04 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:40] [Server thread/INFO] (Minecraft) <masa_> scrolling up quickly
[15:36:40] [Render thread/INFO] (Minecraft) [CHAT] [15:36:40] <masa_> scrolling up quickly
[15:36:41] [Render thread/INFO] (malilib) time: DA51, tick: AADF - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA59, tick: AADF - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA60, tick: AADF - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA6A, tick: AADF - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA71, tick: AADF - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA7B, tick: AADF - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA84, tick: AAE0 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:41] [Render thread/INFO] (malilib) time: DA92, tick: AAE0 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[15:36:48] [Server thread/INFO] (Minecraft) <masa_> scrolling down quickly
[15:36:48] [Render thread/INFO] (Minecraft) [CHAT] [15:36:48] <masa_> scrolling down quickly
[15:36:49] [Render thread/INFO] (malilib) time: F7B5, tick: AB75 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7C3, tick: AB75 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7CD, tick: AB75 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7D6, tick: AB76 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7DE, tick: AB76 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7E5, tick: AB76 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7EE, tick: AB76 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[15:36:49] [Render thread/INFO] (malilib) time: F7F5, tick: AB76 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0

And the diff in this build is this: image

Note that this does not affect any of the GUIs yet, only the direct mouse scroll input hooks that some mods use.

globau commented 3 years ago
[21:06:14] <glob> scrolling up one-by-one
[21:06:15] time: E9E5, tick: 332F - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:15] time: E9F5, tick: 332F - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:15] time: EA06, tick: 3330 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:15] time: EB64, tick: 3337 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:15] time: EB75, tick: 3337 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:15] time: EB85, tick: 3337 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:15] time: EB96, tick: 3338 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:15] time: EBA7, tick: 3338 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:17] time: F312, tick: 335E - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:17] time: F3EC, tick: 3362 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:17] time: F40C, tick: 3363 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:17] time: F41D, tick: 3363 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:17] time: F42E, tick: 3364 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:17] time: F43F, tick: 3364 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:17] time: F44F, tick: 3364 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:17] time: F493, tick: 3366 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F837, tick: 3378 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F848, tick: 3379 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F87A, tick: 337A - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F89B, tick: 337A - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F8AD, tick: 337B - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F8BE, tick: 337B - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F8D0, tick: 337C - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:18] time: F8DF, tick: 337C - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:19] time: F8FF, tick: 337C - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:19] time: F9C7, tick: 3380 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:19] time: F9D8, tick: 3381 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:19] time: F9E8, tick: 3381 - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:19] time: F9F9, tick: 3381 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FCE7, tick: 3390 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FCFA, tick: 3391 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FD0A, tick: 3391 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FD5D, tick: 3393 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FDC0, tick: 3395 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FDE2, tick: 3395 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FDF2, tick: 3396 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FE02, tick: 3396 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:20] time: FE24, tick: 3397 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:28] <glob> scrolling down one-by-one
[21:06:29] time: 2224, tick: 344F - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2235, tick: 344F - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2238, tick: 3450 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2245, tick: 3450 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2257, tick: 3450 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2278, tick: 3451 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2299, tick: 3451 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 22AA, tick: 3452 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 22BA, tick: 3452 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 22CB, tick: 3452 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 22EC, tick: 3453 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 2393, tick: 3456 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 23A4, tick: 3457 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 23B4, tick: 3457 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:29] time: 23C5, tick: 3457 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 26B3, tick: 3466 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 26C4, tick: 3467 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:30] time: 26D4, tick: 3467 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 26E5, tick: 3467 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:30] time: 26F5, tick: 3468 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 2706, tick: 3468 - xOffset: -0.1, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:30] time: 2717, tick: 3468 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:30] time: 2728, tick: 3469 - xOffset: -0.1, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 273B, tick: 3469 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 275B, tick: 346A - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 278D, tick: 346B - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 279C, tick: 346B - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:30] time: 27BE, tick: 346C - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2C4E, tick: 3483 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2C6F, tick: 3484 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2C9F, tick: 3485 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2D35, tick: 3488 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2D57, tick: 3488 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2D78, tick: 3489 - xOffset: -0.1, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:32] time: 2D89, tick: 3489 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2D9A, tick: 348A - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2DAB, tick: 348A - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2DBC, tick: 348A - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:32] time: 2DCC, tick: 348B - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2DDC, tick: 348B - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2DED, tick: 348B - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2E40, tick: 348D - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2E62, tick: 348E - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2E72, tick: 348E - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2E84, tick: 348E - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2EA4, tick: 348F - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:32] time: 2ED6, tick: 3490 - xOffset: -0.1, yOffset: 0.0, discrete: false, sensitivity: 1.0, amount: 0.0
[21:06:39] <glob> scrolling up quickly
[21:06:39] time: 49FC, tick: 351B - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:39] time: 4A0D, tick: 351B - xOffset: 0.30000000000000004, yOffset: 1.4000000000000001, discrete: false, sensitivity: 1.0, amount: 1.4000000000000001
[21:06:39] time: 4A1D, tick: 351C - xOffset: 0.30000000000000004, yOffset: 3.6, discrete: false, sensitivity: 1.0, amount: 3.6
[21:06:39] time: 4A3F, tick: 351C - xOffset: 0.0, yOffset: 4.2, discrete: false, sensitivity: 1.0, amount: 4.2
[21:06:39] time: 4A50, tick: 351D - xOffset: 0.0, yOffset: 5.7, discrete: false, sensitivity: 1.0, amount: 5.7
[21:06:39] time: 4A60, tick: 351D - xOffset: 0.0, yOffset: 6.2, discrete: false, sensitivity: 1.0, amount: 6.2
[21:06:39] time: 4A71, tick: 351D - xOffset: 0.0, yOffset: 6.300000000000001, discrete: false, sensitivity: 1.0, amount: 6.300000000000001
[21:06:39] time: 4A74, tick: 351E - xOffset: 0.0, yOffset: 6.1000000000000005, discrete: false, sensitivity: 1.0, amount: 6.1000000000000005
[21:06:39] time: 4A92, tick: 351E - xOffset: 0.0, yOffset: 5.9, discrete: false, sensitivity: 1.0, amount: 5.9
[21:06:39] time: 4AA3, tick: 351E - xOffset: 0.0, yOffset: 5.6000000000000005, discrete: false, sensitivity: 1.0, amount: 5.6000000000000005
[21:06:39] time: 4AB4, tick: 351F - xOffset: 0.0, yOffset: 5.800000000000001, discrete: false, sensitivity: 1.0, amount: 5.800000000000001
[21:06:39] time: 4AC4, tick: 351F - xOffset: 0.0, yOffset: 5.5, discrete: false, sensitivity: 1.0, amount: 5.5
[21:06:39] time: 4AD5, tick: 351F - xOffset: 0.0, yOffset: 5.1000000000000005, discrete: false, sensitivity: 1.0, amount: 5.1000000000000005
[21:06:39] time: 4AD8, tick: 3520 - xOffset: 0.0, yOffset: 4.7, discrete: false, sensitivity: 1.0, amount: 4.7
[21:06:39] time: 4AF6, tick: 3520 - xOffset: 0.0, yOffset: 4.3, discrete: false, sensitivity: 1.0, amount: 4.3
[21:06:40] time: 4B07, tick: 3520 - xOffset: 0.0, yOffset: 4.0, discrete: false, sensitivity: 1.0, amount: 4.0
[21:06:40] time: 4B0A, tick: 3521 - xOffset: 0.0, yOffset: 3.7, discrete: false, sensitivity: 1.0, amount: 3.7
[21:06:40] time: 4B29, tick: 3521 - xOffset: 0.0, yOffset: 3.4000000000000004, discrete: false, sensitivity: 1.0, amount: 3.4000000000000004
[21:06:40] time: 4B39, tick: 3521 - xOffset: 0.0, yOffset: 3.1, discrete: false, sensitivity: 1.0, amount: 3.1
[21:06:40] time: 4B49, tick: 3522 - xOffset: 0.0, yOffset: 2.8000000000000003, discrete: false, sensitivity: 1.0, amount: 2.8000000000000003
[21:06:40] time: 4B5A, tick: 3522 - xOffset: 0.0, yOffset: 2.6, discrete: false, sensitivity: 1.0, amount: 2.6
[21:06:40] time: 4B6D, tick: 3522 - xOffset: 0.0, yOffset: 2.4000000000000004, discrete: false, sensitivity: 1.0, amount: 2.4000000000000004
[21:06:40] time: 4B70, tick: 3523 - xOffset: 0.0, yOffset: 2.2, discrete: false, sensitivity: 1.0, amount: 2.2
[21:06:40] time: 4B8C, tick: 3523 - xOffset: 0.0, yOffset: 2.0, discrete: false, sensitivity: 1.0, amount: 2.0
[21:06:40] time: 4B9D, tick: 3523 - xOffset: 0.0, yOffset: 1.9000000000000001, discrete: false, sensitivity: 1.0, amount: 1.9000000000000001
[21:06:40] time: 4BAE, tick: 3524 - xOffset: 0.0, yOffset: 1.7000000000000002, discrete: false, sensitivity: 1.0, amount: 1.7000000000000002
[21:06:40] time: 4BBF, tick: 3524 - xOffset: 0.0, yOffset: 1.6, discrete: false, sensitivity: 1.0, amount: 1.6
[21:06:40] time: 4BCF, tick: 3524 - xOffset: 0.0, yOffset: 1.4000000000000001, discrete: false, sensitivity: 1.0, amount: 1.4000000000000001
[21:06:40] time: 4BD2, tick: 3525 - xOffset: 0.0, yOffset: 1.3, discrete: false, sensitivity: 1.0, amount: 1.3
[21:06:40] time: 4BF0, tick: 3525 - xOffset: 0.0, yOffset: 1.2000000000000002, discrete: false, sensitivity: 1.0, amount: 1.2000000000000002
[21:06:40] time: 4C01, tick: 3525 - xOffset: 0.0, yOffset: 1.1, discrete: false, sensitivity: 1.0, amount: 1.1
[21:06:40] time: 4C12, tick: 3526 - xOffset: 0.0, yOffset: 1.0, discrete: false, sensitivity: 1.0, amount: 1.0
[21:06:40] time: 4C22, tick: 3526 - xOffset: 0.0, yOffset: 0.9, discrete: false, sensitivity: 1.0, amount: 0.9
[21:06:40] time: 4C33, tick: 3526 - xOffset: 0.0, yOffset: 0.8, discrete: false, sensitivity: 1.0, amount: 0.8
[21:06:40] time: 4C43, tick: 3527 - xOffset: 0.0, yOffset: 0.8, discrete: false, sensitivity: 1.0, amount: 0.8
[21:06:40] time: 4C55, tick: 3527 - xOffset: 0.0, yOffset: 0.7000000000000001, discrete: false, sensitivity: 1.0, amount: 0.7000000000000001
[21:06:40] time: 4C65, tick: 3527 - xOffset: 0.0, yOffset: 0.6000000000000001, discrete: false, sensitivity: 1.0, amount: 0.6000000000000001
[21:06:40] time: 4C75, tick: 3528 - xOffset: 0.0, yOffset: 0.6000000000000001, discrete: false, sensitivity: 1.0, amount: 0.6000000000000001
[21:06:40] time: 4C86, tick: 3528 - xOffset: 0.0, yOffset: 0.5, discrete: false, sensitivity: 1.0, amount: 0.5
[21:06:40] time: 4C97, tick: 3528 - xOffset: 0.0, yOffset: 0.5, discrete: false, sensitivity: 1.0, amount: 0.5
[21:06:40] time: 4CA7, tick: 3529 - xOffset: 0.0, yOffset: 0.5, discrete: false, sensitivity: 1.0, amount: 0.5
[21:06:40] time: 4CB8, tick: 3529 - xOffset: 0.0, yOffset: 0.4, discrete: false, sensitivity: 1.0, amount: 0.4
[21:06:40] time: 4CC9, tick: 3529 - xOffset: 0.0, yOffset: 0.4, discrete: false, sensitivity: 1.0, amount: 0.4
[21:06:40] time: 4CD9, tick: 352A - xOffset: 0.0, yOffset: 0.4, discrete: false, sensitivity: 1.0, amount: 0.4
[21:06:40] time: 4CEA, tick: 352A - xOffset: 0.0, yOffset: 0.30000000000000004, discrete: false, sensitivity: 1.0, amount: 0.30000000000000004
[21:06:40] time: 4CFB, tick: 352A - xOffset: 0.0, yOffset: 0.30000000000000004, discrete: false, sensitivity: 1.0, amount: 0.30000000000000004
[21:06:40] time: 4D0B, tick: 352B - xOffset: 0.0, yOffset: 0.30000000000000004, discrete: false, sensitivity: 1.0, amount: 0.30000000000000004
[21:06:40] time: 4D1C, tick: 352B - xOffset: 0.0, yOffset: 0.30000000000000004, discrete: false, sensitivity: 1.0, amount: 0.30000000000000004
[21:06:40] time: 4D2D, tick: 352B - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:40] time: 4D3E, tick: 352C - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:40] time: 4D4E, tick: 352C - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:40] time: 4D5F, tick: 352C - xOffset: 0.0, yOffset: 0.2, discrete: false, sensitivity: 1.0, amount: 0.2
[21:06:40] time: 4D70, tick: 352D - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4D80, tick: 352D - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4D91, tick: 352D - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4DA1, tick: 352E - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4DB2, tick: 352E - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4DC3, tick: 352E - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4DE4, tick: 352F - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4DF6, tick: 352F - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:40] time: 4E16, tick: 3530 - xOffset: 0.0, yOffset: 0.1, discrete: false, sensitivity: 1.0, amount: 0.1
[21:06:47] <glob> scrolling down quickly
[21:06:48] time: 6C19, tick: 35CA - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:48] time: 6C2A, tick: 35CA - xOffset: -0.1, yOffset: -1.3, discrete: false, sensitivity: 1.0, amount: -1.3
[21:06:48] time: 6C3B, tick: 35CA - xOffset: -0.2, yOffset: -1.8, discrete: false, sensitivity: 1.0, amount: -1.8
[21:06:48] time: 6C3E, tick: 35CB - xOffset: 0.0, yOffset: -0.9, discrete: false, sensitivity: 1.0, amount: -0.9
[21:06:48] time: 6C4C, tick: 35CB - xOffset: -0.1, yOffset: -0.9, discrete: false, sensitivity: 1.0, amount: -0.9
[21:06:48] time: 6C4C, tick: 35CB - xOffset: -0.1, yOffset: -0.9, discrete: false, sensitivity: 1.0, amount: -0.9
[21:06:48] time: 6C6D, tick: 35CB - xOffset: 0.0, yOffset: -1.9000000000000001, discrete: false, sensitivity: 1.0, amount: -1.9000000000000001
[21:06:48] time: 6C7D, tick: 35CC - xOffset: 0.0, yOffset: -2.4000000000000004, discrete: false, sensitivity: 1.0, amount: -2.4000000000000004
[21:06:48] time: 6C8E, tick: 35CC - xOffset: 0.0, yOffset: -2.6, discrete: false, sensitivity: 1.0, amount: -2.6
[21:06:48] time: 6C9F, tick: 35CC - xOffset: 0.0, yOffset: -2.6, discrete: false, sensitivity: 1.0, amount: -2.6
[21:06:48] time: 6CAF, tick: 35CD - xOffset: 0.0, yOffset: -2.6, discrete: false, sensitivity: 1.0, amount: -2.6
[21:06:48] time: 6CC0, tick: 35CD - xOffset: 0.0, yOffset: -2.5, discrete: false, sensitivity: 1.0, amount: -2.5
[21:06:48] time: 6CD1, tick: 35CD - xOffset: 0.0, yOffset: -2.4000000000000004, discrete: false, sensitivity: 1.0, amount: -2.4000000000000004
[21:06:48] time: 6CE1, tick: 35CE - xOffset: 0.0, yOffset: -2.7, discrete: false, sensitivity: 1.0, amount: -2.7
[21:06:48] time: 6CF2, tick: 35CE - xOffset: 0.0, yOffset: -2.4000000000000004, discrete: false, sensitivity: 1.0, amount: -2.4000000000000004
[21:06:48] time: 6D03, tick: 35CE - xOffset: 0.0, yOffset: -2.2, discrete: false, sensitivity: 1.0, amount: -2.2
[21:06:48] time: 6D13, tick: 35CF - xOffset: 0.0, yOffset: -2.0, discrete: false, sensitivity: 1.0, amount: -2.0
[21:06:48] time: 6D24, tick: 35CF - xOffset: 0.0, yOffset: -1.9000000000000001, discrete: false, sensitivity: 1.0, amount: -1.9000000000000001
[21:06:48] time: 6D35, tick: 35CF - xOffset: 0.0, yOffset: -1.7000000000000002, discrete: false, sensitivity: 1.0, amount: -1.7000000000000002
[21:06:48] time: 6D45, tick: 35D0 - xOffset: 0.0, yOffset: -1.6, discrete: false, sensitivity: 1.0, amount: -1.6
[21:06:48] time: 6D57, tick: 35D0 - xOffset: 0.0, yOffset: -1.4000000000000001, discrete: false, sensitivity: 1.0, amount: -1.4000000000000001
[21:06:48] time: 6D67, tick: 35D0 - xOffset: 0.0, yOffset: -1.3, discrete: false, sensitivity: 1.0, amount: -1.3
[21:06:48] time: 6D77, tick: 35D1 - xOffset: 0.0, yOffset: -1.2000000000000002, discrete: false, sensitivity: 1.0, amount: -1.2000000000000002
[21:06:48] time: 6D88, tick: 35D1 - xOffset: 0.0, yOffset: -1.1, discrete: false, sensitivity: 1.0, amount: -1.1
[21:06:48] time: 6D99, tick: 35D1 - xOffset: 0.0, yOffset: -1.0, discrete: false, sensitivity: 1.0, amount: -1.0
[21:06:48] time: 6DAA, tick: 35D2 - xOffset: 0.0, yOffset: -0.9, discrete: false, sensitivity: 1.0, amount: -0.9
[21:06:48] time: 6DBB, tick: 35D2 - xOffset: 0.0, yOffset: -0.8, discrete: false, sensitivity: 1.0, amount: -0.8
[21:06:48] time: 6DCB, tick: 35D2 - xOffset: 0.0, yOffset: -0.8, discrete: false, sensitivity: 1.0, amount: -0.8
[21:06:48] time: 6DDB, tick: 35D3 - xOffset: 0.0, yOffset: -0.7000000000000001, discrete: false, sensitivity: 1.0, amount: -0.7000000000000001
[21:06:48] time: 6DEC, tick: 35D3 - xOffset: 0.0, yOffset: -0.7000000000000001, discrete: false, sensitivity: 1.0, amount: -0.7000000000000001
[21:06:48] time: 6DFD, tick: 35D3 - xOffset: 0.0, yOffset: -0.6000000000000001, discrete: false, sensitivity: 1.0, amount: -0.6000000000000001
[21:06:48] time: 6E0D, tick: 35D4 - xOffset: 0.0, yOffset: -0.6000000000000001, discrete: false, sensitivity: 1.0, amount: -0.6000000000000001
[21:06:48] time: 6E1F, tick: 35D4 - xOffset: 0.0, yOffset: -0.5, discrete: false, sensitivity: 1.0, amount: -0.5
[21:06:49] time: 6E31, tick: 35D4 - xOffset: 0.0, yOffset: -0.5, discrete: false, sensitivity: 1.0, amount: -0.5
[21:06:49] time: 6E40, tick: 35D5 - xOffset: 0.0, yOffset: -0.5, discrete: false, sensitivity: 1.0, amount: -0.5
[21:06:49] time: 6E50, tick: 35D5 - xOffset: 0.0, yOffset: -0.4, discrete: false, sensitivity: 1.0, amount: -0.4
[21:06:49] time: 6E61, tick: 35D5 - xOffset: 0.0, yOffset: -0.4, discrete: false, sensitivity: 1.0, amount: -0.4
[21:06:49] time: 6E71, tick: 35D6 - xOffset: 0.0, yOffset: -0.4, discrete: false, sensitivity: 1.0, amount: -0.4
[21:06:49] time: 6E82, tick: 35D6 - xOffset: 0.0, yOffset: -0.30000000000000004, discrete: false, sensitivity: 1.0, amount: -0.30000000000000004
[21:06:49] time: 6E94, tick: 35D6 - xOffset: 0.0, yOffset: -0.30000000000000004, discrete: false, sensitivity: 1.0, amount: -0.30000000000000004
[21:06:49] time: 6EA4, tick: 35D7 - xOffset: 0.0, yOffset: -0.30000000000000004, discrete: false, sensitivity: 1.0, amount: -0.30000000000000004
[21:06:49] time: 6EB5, tick: 35D7 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:49] time: 6EC5, tick: 35D7 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:49] time: 6ED5, tick: 35D8 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:49] time: 6EE6, tick: 35D8 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:49] time: 6EF7, tick: 35D8 - xOffset: 0.0, yOffset: -0.2, discrete: false, sensitivity: 1.0, amount: -0.2
[21:06:49] time: 6F08, tick: 35D9 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F18, tick: 35D9 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F29, tick: 35D9 - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F39, tick: 35DA - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F4A, tick: 35DA - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F6C, tick: 35DB - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F7C, tick: 35DB - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
[21:06:49] time: 6F9D, tick: 35DC - xOffset: 0.0, yOffset: -0.1, discrete: false, sensitivity: 1.0, amount: -0.1
maruohon commented 3 years ago

Here is a related analysis of the changes from LWJGL 2 to LWJGL 3 in the context of Minecraft from a while back by Pokechu22: https://gist.github.com/Pokechu22/2ee22711bec84136e1e94e225bd916b4

maruohon commented 3 years ago

I now uploaded version 0.10.0-dev.24 of malilib to CurseForge, which includes the fixes that were tested 2 days ago on Discord (ie. this commit: https://github.com/maruohon/malilib/commit/1435da8d3092d17c48bb3d32929d895f79c8070b).

ejm554 commented 1 month ago

Hi there. 👋🏼 I found this issue (#370) after searching for "mouse wheel." I'm on macOS, and I'm encountering the frustrating behavior described by @MaxLevs in his original post. Despite this issue being three years old (as of this comment), it appears that it is still open.

Here are some of my specs, FYI:

maruohon commented 1 month ago

@ejm554 Can you tell how many "notches" it scrolls when you try to scroll only one notch? One way to test this is to scroll over one of the number input elements in some config screen, like the placement position +/- button.

Also try the debug steps I explained in my second message, and post the output.

ejm554 commented 1 month ago

@ejm554 Can you tell how many "notches" it scrolls when you try to scroll only one notch?

@maruohon Strangely, on my system, it doesn't seem to respond to each notch, i.e., I often need to scroll my wheel a few times to get it to advance the mode/position a single step.

Also try the debug steps I explained in my second message, and post the output.

I need a little more explanation how to use your debug tool. After installing it in my mods folder and launching Minecraft, I get the following error. Perhaps I need to create a Minecraft 1.17.1 world with (some older version of) Litematica, and install the debug tool there?

Incompatible mod set!
net.fabricmc.loader.impl.FormattedException: Mod resolution encountered an incompatible mod set!
A potential solution has been determined:
     - Replace mod 'MaLiLib' (malilib) 0.10.0-dev.23+mousedebug.1 with any 0.15.x version.
Unmet dependency listing:
     - Mod 'Litematica' (litematica) 0.14.3 requires any 0.15.x version of mod 'MaLiLib' (malilib), but only the wrong version is present: 0.10.0-dev.23+mousedebug.1!
    at net.fabricmc.loader.impl.FormattedException.ofLocalized(FormattedException.java:51)
    at net.fabricmc.loader.impl.FabricLoaderImpl.load(FabricLoaderImpl.java:192)
    at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:148)
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:68)
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
    at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100)
    at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129)
    at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

As an an aside, I see a Litematica config named debugLogging. Would setting that to TRUE on my current 1.19.4 world — instead of following instructions for the older tool — collect the scrolling data that you're seeking? I saw you mention this config in a previous issue.

maruohon commented 1 month ago

@ejm554 You don't need to use any special version, that debug option is in all malilib versions since that 1.17.1 version. So just use your normal malilib version, and access the config menu with A + C and then in the Debug category there is the option mouseScrollDebug.

But if the issue in your case is not too fast scrolling but too slow scrolling, then it's kind of the opposite issue. I guess first try enabling the discrete mouse scrolling option in the vanilla settings (Options -> Controls -> Mouse -> Discrete Scrolling). If that doesn't help, then try increasing the scroll sensitivity to over 100% to see if that helps (both with and without discrete scrolling).