mojira.dev
MC-121772

Can't scroll while holding SHIFT on macOS

While holding LSHIFT/RSHIFT I am unable to scroll through my hotbar items.


Code analysis

Code analysis in this comment.

Related issues

MC-124784 Unable to scroll while sneaking on macOS MC-126975 in minecraft the new snap shot 18w10c wen you sneak you can not scroll in the hot bar MC-128701 Cannot Scroll While Crouching MC-131514 Cannot use the mousewheel while holding shift MC-132160 no centre scroll when shifting MC-132415 Mouse wheel is disabled while holding shift MC-133084 Scroll wheel MC-134142 When sneaking can't use scroll wheel. MC-134413 Scroll wheel does not work while holding shift MC-134547 Scrolling won't work if you are holding shift MC-134565 Can't use mouse scroll wheel while in sneak mode MC-141770 When i sneak i can't change item in the hotbar MC-142322 Sneaking blocks ability of changing slots MC-149143 1.14 Can't Switch Items! MC-152131 Cannot scroll whilst crouching MC-153353 Can't scroll while sneaking MC-155958 Can't scroll while shifting in 1.14.3 on MacOS MC-159135 When you're crouched you can't change item. MC-161020 Scrollen während man Shift drückt nicht möglich MC-161785 Scrolling blocked when shifting MC-165089 Can't scroll while holding SHIFT MC-171682 Scroll wheel doesn't work when pressing shift on macOS MC-177345 Minecraft 1.13+ on OSX bugged MC-199130 Can't scroll while shifting MC-206114 Holding SHIFT (crouch) on Mac causes hotbar scrolling to lock up MC-207718 Mac players shift issue effecting tool wheel 1.3+ bug MC-212198 Unable to Scroll While Shifting MC-212309 Scroll-shift problem on Mac MC-228647 hotbar slots don't switch while shifting MC-228981 Scroll does not work MC-237096 hotbar does not work properly on macos MC-245083 Can't Change Main Hand Item Slot With Mouse Wheel Whilst Shifting On Mac MC-256323 macOS - hotbar/crouching

Attachments

Comments

migrated
[media]
[Mod] Neko

Cannot reproduce on Windows 10; possibly a macOS issue.

CreepyHobo

Issue still persists in 17w45b.

migrated

Still persists in 17w47b

This does appear to happen only on macOS. This is standard behavior in macOS. Holding down shift disables scrolling due to the "Shift Scroll" feature.

Code may have to be implemented in Minecraft to get around this issue.

migrated

Am able to reproduce. Adding forced crash report and updating description.

CreepyHobo

Still happening in 17w49a.

CreepyHobo

Still persisting in 17w50a.

migrated

And still persisting in 18w05a.

migrated

Still happening in 18w10c

migrated

Still happening in 18w22b

migrated

Still happening in pre-2

migrated

This is not a Minecraft bug, it is a feature on MacOS that allows you to scroll sideways for certain reasons.

migrated

Still happening in pre-4, and I don't think this is a MacOS problem, it worked perfectly before 1.13, and I haven't done any update on my mac, I did the last one two years ago. So something in the game changed, that's the only explanation I can see

migrated

Please fix this its unplayable!

Alexandre Auclin the problem is maybe due to changes in the options.txt file. In 1.12 there was numeral id for keyboard options and now it is the name of the key. Additionnaly, the capsLock key cannot be used now.

 

migrated

Issue is still persisting for me.  Affecting gameplay, you can't use the mouse wheel to scroll through items in the hot bar while holding shift like you could since at least 1.8 and probably before. 

migrated

Still an issue in the full release of 1.13

migrated

I have this issue as well.  Never a problem in 1.12.2 and earlier.  But this is definitely a Mac problem as Shift + Scroll activates horizontal scrolling, which apparently Minecraft now interprets differently and rejects it for hotbar scrolling.  Unfortunately, if you don't have a Magic Mouse for your Mac there is no easy way to change this behavior.  Best workaround is rebinding your sneak to something other than shift.

migrated

It's the LWJGL update I guess. Since MC-42171 also got resolved and now behaves like it does everywhere in the system I guess it's not far fetched that it now also supports scroll axis (which I haven't verified but I found old posts complaining that it didn't support it at some point).

 

In 1.12.2 with LWJGL 2.9.2 you can go to Options -> Controls and scroll or shift-scroll to scroll through the key bindings list.

In 1.13 with LWJGL 3.1.6 build 14 you can only do normal scroll, shift-scroll will not scroll the list. That will ofc translate to the hotbar as well but it's not hotbar exclusive, it affects any scrolling in the game apparently.

Maybe it's just as simple as to alias/bind left/right with up/down respectively?

migrated

yeah it's unplayable. tried to get back into minecraft today. after 5 minutes i noticed this bug (it took me another 5 minutes to realize it is a bug and not just my mousewheel acting up). cave exploring is particularly annoying with this bug, especially if you're playing hardcore.

oh well i'll check back in another year or so. back to factorio now

migrated

This is a Mac feature, which appears to be mandatory, that changes the axis of scrolling when holding shift.

Perhaps Minecraft could support horizontal scrolling of the toolbar to work around this?

migrated

Hi Pete, If it's a mandatory Mac Feature, why was it working in 1.12???

Gatinh0

I second Hexregulus, this feature worked in 1.12, and this bug only appeared in 1.13.

It is not a mandatory Mac feature, it is a bug introduced in 1.13

migrated

When there's a macOS only bug, it's very tiresome to see people saying that's a macOS feature or a macOS limitation. Especially when previous versions of Minecraft didn't have the issue. This  bug and the other scrolling bug was introduced in 1.13 and 1.12 and previous is playable on the same macOS 

Also, I really wonder how any other game developers can actually achieve to fully support macOS, then. The game should completely abstract the OS input interpretation and be in its « little bubble » and I think that's how any other games work. 

I second the idea that LWJGL seemed to be source of the problem here. It has its issues on macOS... :/

It's only a supposition because I no nothing about LWJGL but It looks like LWJGL is getting more compatible with how the Apple frameworks pickup and interpret the mouse and keyboard input. While its great for desktop apps, I don't see how it should be relevant in games. But if it's more precise in how macOS picking these input, it should then be more flexible on what to actually do with them. 

Beyond anything, the JVM was never a really fully multi-platform wonder and had issues since the day it was born. We will never have the same experience on Windows and Mac if we rely on it. I hope that the bedrock edition will be ported on macOS. Native software will always be the better choice. Not in term of ressources needed, of course. 

 

migrated

When is this going to be resolved? it has been going on for countless months now. Things work fine in 1.12, but in 1.13 scrolling is broken. It makes no sense that this is being wholly ignored, while at the same time the game is literally being marked to the Mac platform.

What's the word on resolution?

migrated

Please, fix this bug!! It is really annoying :S

migrated

I really wonder if there's a real concern about Mac users. They don't seem to even test Minecraft on Macs.

migrated

When is this going to be fixed? 

migrated

This bug persist in snapshot 19w02a

migrated

Do you guys even bug test for Mac? Come on, this shouldn't be a problem as it never happened in 1.12, so all the comments saying it's macOS at fault are BULL.

migrated

The bug still persist in snapshot 19w05a

migrated

@wolarts I'm 99% certain they don't test on Macs. 

migrated

Confirmed on 19w07a. 
Since minecraft doesn't use horizontal scrolling for anything, easiest fix is to interpret xoffset as yoffset. 

See you next week, Mojang! 
Waiting for 19w07b or 19w08a

migrated

Hey all, I just wanted to keep this thread alive since I really don't want to see another major release with a significant bug on Mac slip through.

I play a fair bit of Skyblock style maps where you are constantly holding shift - and being unable to hold shift and scroll through your inventory at the same time is very inconvenient.

I have found a workaround by setting up a separate keyboard profile for Minecraft using Karabiner-Elements. I just re-map Left Shift to Number Lock, and then configure Minecraft to use Number Lock as the sneak key. It's not a great solution as it requires some reasonably technical third-party software but it does work.

I am a web developer with limited Java experience, but I'd be happy to provide feedback, QA or anything like that if it's helpful. I know the convention on Mac is that Shift+Scroll is horizontal scroll but since horizontal scroll currently has no effect in Minecraft, I expect adding it to the default behaviour would be fine, though it may need testing/feedback from trackball users as well (not sure how common they are, but I know they exist!).

If there is a good reason to not turn it on by default, perhaps a control configuration something like Horizontal Scroll Inventory would be possible? Thanks for the great game, and the great work 🙂

 

migrated

@Andrew VanEe. Don't get your hopes too high. 1.14 will be released with this bug. 

gaspoweredpick

Confirmed for 19w14a

gaspoweredpick

Confirmed for 1.14 Pre-Release 1

migrated

Confirmed for 1.14 Pre-Release 2

pokechu22

Code analysis:

I assume that macOS automatically changes from vertical scrolling to horizontal scrolling while shift is held (which I have not investigated, but presume to be the case). I also assume that it just does that by putting data in scrollingDeltaX instead of scrollingDeltaY (again unconfirmed but plausible), without indicating it any other way (I looked at the documentation and don't see anything about this). (I don't see any code in GLFW that manually implements shift swapping it, and from what I've heard this is normal behavior in other applications). Someone who actually uses a mac should confirm this.

LWJGL 3

GLFW takes a mouse event and sends it to the callback without doing any special processing (related to vertial/horizontal scrolling, at least). LWJGL 3 simply directly passes this data to the game (via a GLFWScrollCallbackI), which the game then uses like this (based on the 1.14-pre2 code where MC-123773 is fixed with the addition of discrete scrolling, and obviously code abbreviated):

private void scrollCallback(long handle, double xoffset, double yoffset) {
        if (handle == Minecraft.getInstance().mainWindow.getHandle()) {
            double delta = (this.minecraft.gameSettings.discreteScroll ? Math.signum(yoffset) : yoffset) * this.minecraft.gameSettings.mouseWheelSensitivity;

            if (this.minecraft.currentScreen != null) {
                // Scroll GUIs
                this.minecraft.currentScreen.mouseScrolled(delta);
            } else if (this.minecraft.player != null) {
                // ... eventually use delta to scroll the hotbar or spectator stuff ...
            }
        }
    }

Note that this code only uses yoffset, not xoffset.

LWJGL 2

LWJGL 2 only provided a single interface for mouse events (and it did not use callbacks). LWJGL only exposes a Mouse.getEventDWheel function (and a separate non-event version, which MC did not use). Note that it does not distinguish between horizontal and vertical scrolling at all. MC interacted with actual scroll events in a very similar way (though it did not care about the magnitude at all at that time).

The actual code LWJGL 2 uses to get scroll data is not pleasant. The code it uses to get native scroll events is fairly sane, though note the parameters [event deltaX], [event deltaY], 1.0f. Those are passed to MacOSXNativeMouse.mouseMoved, where dx is deltaX, dy is deltaY, and dz is 1.0f. This function checks if dz is nonzero, and then treats it as a scroll event (basically, dz really should be a boolean isWheelEvent or something instead of the chaos it is now). That function then decides which value to use as the scroll magnitude; it uses dy (vertical scroll) normally, but if that's 0 it instead uses dx (horizontal scroll). That value is then converted to the same scale used on windows, and queued for access via the mouse event system. This workaround was specifically added to handle scrolling while shift is held on mac.

In comparison, other OSs do not have such a workaround. Linux mouse wheel input works by treating wheel up and wheel down as additional buttons (see XCB_BUTTON_INDEX_4 and XCB_BUTTON_INDEX_5 in xcb_grab_button(3), and doesn't do anything with horizontal motion. Windows mouse input only listens for WM_MOUSEWHEEL and not WM_MOUSEHWHEEL, which again means it only gets vertical scrolls. (I can say empirically that windows does not randomly decide to start sending hwheel messages for vertical scrolls when shift is held, and I'm pretty sure it's the same for linux but I haven't confirmed it).

Fix

The LWJGL 2 code could simply be replicated in the callback, only applying to macs:

private void scrollCallback(long handle, double xoffset, double yoffset) {
        if (handle == Minecraft.getInstance().mainWindow.getHandle()) {
            double offset = yoffset;
            if (Minecraft.IS_RUNNING_ON_MAC && yoffset == 0) {
                offset = xoffset;
            }
            // ... same as before, using offset ...
        }
    }

However, it probably would be better to only do this when being used to control the hotbar or such, and not for GUIs (which possibly could make separate use of the horizontal scroll).

The one danger of this is picking up incorrect horizontal scrolls (e.g. if the mouse wheel is just brushed sideways). I don't think that's likely to cause much of a problem, though, since it worked that way in 1.12 and earlier without much issue.


EDIT: Amended to note differences in LWJGL 2 on other platforms; only mac had this weird horizontal scroll workaround. (I guess apple just likes weird scrolling logic...)

migrated

Hey @Pokechu22 , as I mentioned in a previous comment, I'd be happy to do some testing if you need it. I don't have too much experience with Java and LWJGL, but I have a Mac and Minecraft and would love to see this issue sorted out.

https://bugs.mojang.com/browse/MC-121772?focusedCommentId=526354&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-526354

It sounds like you're on the right track though with the implementation differences between LWJGL 2 and 3. Personally, I don't think it's an issue to apply the fix across the board - I have not found any interfaces in Minecraft that utilize horizontal scroll and it's a pretty obscure control even for experienced Mac users.

Thanks!

migrated

The horizontal scrolling in itself is not obscure in desktop app. For example, when you're working on a picture or an illustration, you have to scroll in the two directions. 

The horizontal scrolling triggered by shift+scroll wheel is there when you don't want to use the scroll bars or  the trackpad if you have one. But that only affect the scroll from the mouse wheel, not the trackpad. 

It's like the ctrl-click that triggers a right-click, but I don't see anyone really used this. By the way, the fact that I can't use my first click in Minecraft while sprinting with the control key is driving me crazy. 

However, I don't think that macOS force this on any app if they don't use native APIs. What I mean is that these issue like this, horizontal scroll and ctrl-click, I only saw them in Minecraft. Any other game I played just work as they wish. I just take one example: Half-Life 2 that hasn't been updated for years is not affected by this.

Games usually are in their own bubble with their GUI etc...

I don't have much knowledge in Java and LWJGL so correct me if I'm wrong but it seems that it is LWJGL or the JVM itself tries to emulate all these macOS behaviours. That should be alright for any desktop apps but for games... that's not good. I say that because Java is so high level and not even native that I don't understand how macOS could force anything on it. And I suppose that it's the fact that it's so high level that you have very few control over things.

Java is an emulator of a machine that doesn't exist, anyway 😉

pokechu22

Regarding testing, there isn't much information I need here. If you want to test something out, there's an events test program included with GLFW that logs all input it gets, but you'd have to compile GLFW from its source code yourself, and if you've never done that before it probably would be a huge pain for data that I don't think would be super useful. And, to my knowledge, Minecraft currently does not have any GUIs that scroll horizontally – it's just something that might be nice to expose for mods or future use.

And now for the main comment. I ended up writing a lot here, yikes. It should be informative, but it's also fairly dense.


@unknown: You definitely have some misconceptions. The JVM actually doesn't matter here – Minecraft isn't using it for the game window or input/output. Java and the various window frameworks it provides (e.g. AWT) are high-level, but high level things are implemented on top of lower level things; they just provide an interface that should be usable on all platforms without needing to adapt code (ideally).

Minecraft doesn't use AWT or any of the other window libraries provided with Java, but instead uses a different library, LWJGL – *L*ight*w*eight *J*ava *G*aming *L*ibrary – which is specifically designed for gaming. LWJGL 3 is (in part) based on GLFW, which is more generalized, and also is a native program (there are different versions of it for different platforms). That is to say, GLFW is a native program, and is used by some native games and apps, and works off of what the platform it's running on gives; on macOS, GLFW uses apple's Cocoa API and more specifically AppKit. LWJGL 3 allows working with GLFW from a Java program (using the JNI). And importantly, both LWJGL and GLFW are open source, but AppKit and Cocoa are not; this means I can't investigate how they actually work.

What I did in my comment (and also with the similar comment about the scroll speed a while back) is go through all of the relevant code from GLFW up to where Minecraft interacts with it, looking for cases where it was emulating macOS-specific behaviors. I didn't find anything like that, and my conclusion is that the different input has been changed by the time it reaches GLFW – i.e. in AppKit or something else that is macOS specific. (What I did find was that LWJGL 2 did special-case macOS so that it would provide a single scroll value that looked similar to other platforms, but that's the opposite of emulating a platform-specific quirk.)

One other thing – there isn't some kind of lower level that could be skipped to. To my understanding, if you're using macOS, you need to use Cocoa and AppKit. (Apparently there also used to be Carbon, but Apple deprecated it and it never supported 64-bit apps.) If there were, that would be great, but my research and looking at apple's documentation hasn't found anything. Basically, there's no way to skip the native APIs – how would you run a mac app without being a mac app? I'd love to be wrong and for there to be some easy answer, but I don't think there is one. And it is important to note – I do not develop mac apps and have no real experience in the area; I'm filling in knowledge as I go along.

Regarding the scrolling behavior in general – I think it makes sense to have a way to simulate horizontal scrolling. But it should be on a per-application basis, or at least handled by the thing that actually adds scroll bars; it shouldn't swap the raw input. There are windows apps that implement it (firefox and paint.net as examples) but it doesn't happen by default.

Your point about other games not being affected is interesting. I'd love to check how they do it, but unfortunately at least in the case of Half-Life 2 the relevant code isn't public. I did look, but the only reference to the scroll wheel I can find in the public release of the hl2 code is in C_WeaponGravityGun::KeyInput (and the declaration of MOUSE_WHEEL_UP/_DOWN in ButtonCode.h). The code of the engine itself seems not to be public (and that's where actually getting input would happen). And according to valve's wiki page it seems like what they have there doesn't even build on OS X, so it won't help here :/.

Regarding the left-right click thing, this is a bit complicated (and I didn't know about that until now...). That behaviour is emulated. To be brief, LWJGL apparently emulated it up until 2.8.5, but then stopped emulating it. People complained about it (MC-13695 and a bug report in LWJGL 2) and then it was manually emulated inside of LWJGL 2 itself again. The same thing happened with 1.13 and LWJGL 3, as MC-121905. However, it is now emulated in Minecraft itself (starting in 1.13-pre10) – the code looks like this:

private void mouseButtonCallback(long handle, int button, int action, int mods) {
        if (handle == this.minecraft.mainWindow.getHandle()) {
            boolean flag = (action == GLFW.GLFW_PRESS);

            if (Minecraft.IS_RUNNING_ON_MAC && button == GLFW.GLFW_MOUSE_BUTTON_LEFT) {
                if (flag) {
                    if ((mods & GLFW.GLFW_MOD_CONTROL) == GLFW.GLFW_MOD_CONTROL) {
                        button = GLFW.GLFW_MOUSE_BUTTON_RIGHT;
                        ++this.simulatedRightClicks;
                    }
                } else if (this.simulatedRightClicks > 0) {
                    button = GLFW.GLFW_MOUSE_BUTTON_RIGHT;
                    --this.simulatedRightClicks;
                }
            }
            // ... do stuff with the actual input ...
        }
    }

Frankly, I find the control+left = right thing silly, especially since it comes from mice with only one button which seems like a silly design to me. (There's other design choices I could complain about, but that's definitely getting off topic so I won't.)

migrated

@pokechu22 Compiling GLFW and running the events example was no trouble at all, but you're right, it's probably not super useful information.

Here is a scroll up then down without shift.

000001c3 to 1 at 82.323: Scroll: 0.000 -0.100
000001c4 to 1 at 82.927: Scroll: 0.000 0.100

And here is a scroll up then down with shift pressed.

0000028a to 1 at 549.864: Key 0x0154 Scancode 0x0038 (LEFT SHIFT) (with shift) was pressed
0000028b to 1 at 550.479: Scroll: -1.000 0.000
0000028c to 1 at 551.257: Scroll: 1.000 0.000

Which is pretty much exactly as you suggested. While I had it running, I thought I'd double check the control click behaviour, and again it's not new information but I thought I'd confirm that the behaviour is not native but emulated as you said:

000000dd to 1 at 379.080: Mouse button 0 (left) (with no mods) was pressed
000000de to 1 at 379.214: Mouse button 0 (left) (with no mods) was released
000000df to 1 at 380.400: Key 0x0155 Scancode 0x003b (LEFT CONTROL) (with control) was pressed
000000e0 to 1 at 380.759: Mouse button 0 (left) (with control) was pressed
000000e1 to 1 at 380.923: Mouse button 0 (left) (with control) was released
gaspoweredpick

Confirmed for 1.14 Pre-Release 5

migrated

Confirmed for release 1.14...

migrated

@Pokechu22

OK So if Minecraft relies on GLFW and if GLFW is a wrapped of some AppKit stuff, I think it should be able to work with NSEvent and get all the mouse events needed. I don't know how much of AppKit GLFW wraps but it should theoretically capture the scroll events, and the modifier key, it should then be able to modify the behaviour and « feedback » as a vertical scroll. 

I've found that utility that can  modifier or even choose another key modifier to have the horizontal scroll. However that enable the smooth scrolling style in the same time like the trackpad so that won't help us as a temporary fix, but it may contains the answer in the source code:

https://mos.caldis.me

It's written in Swift but the GLFW developers could easily translate it into Objective-C:

https://github.com/Caldis/Mos

The comments are in Chinese, unfortunately...

Also, I really think that you don't HAVE to use AppKit to write a software that would run on OS X, it just make your life A LOT easier.

migrated

I think it would be better to look into CGEvent, it's a lower-lever API : https://developer.apple.com/documentation/coregraphics/quartz_event_services?language=objc

migrated

Confirmed in 1.14.1 Pre-Release 1

migrated

By the way, for the fun I tried a random alpha build and this bug isn't in alpha v1.2.1_01. MC-123773 isn't even there either. So the « because of Apple » BS could really be dropped.

pokechu22

I've been busy lately, which is why I haven't replied. Thanks for looking into those. Quartz in particular seems interesting, though it sounds like it's primarily intended for writing accessibility software, e.g. on-screen keyboards (in that it looks like it can be used to send key events as well as receive them); that doesn't mean it won't be usable though. I'll have to look into it further when I have time and access to a mac.

And I guess I should clarify: it's not only an apple issue, but more a "apple does something different, and code that makes some assumptions about input doesn't work right". Specifically for the alpha build you referenced: MC-123773 wouldn't apply since scroll input was only used for the hotbar and that ignored scroll amounts; I don't think there were any scrollable GUIs back then. (I might be wrong here.) The issue came along when during 1.13, mojang started using the scroll amount value, because that seems reasonable for scrollable GUIs – scrolling faster should jump further. But on macOS, the amounts have rather extreme acceleration (from all input sources I could find – and, there might be a better input source, but I don't know of it yet and haven't looked into the things you mentioned).

For this issue: it doesn't exist in Alpha 1.2.1_01 not because it didn't exist when that version was released back in November 2010, but instead because Mojang uses LWJGL 2.9.1-nightly-20130708-debug3 (July 2013) or 2.9.0 (April 2013) for it in the launcher, and those have a workaround for the issue in it. I'm not completely sure why they use that version of LWJGL, but it was a semi-common practice to manually update LWJGL back in the day (info on this is still partially on the wiki) so presumably Mojang grabbed a more recent version to work around bugs like this.

migrated

Confirmed for 1.14.4 Pre-Release 6.

migrated

Until they stop using AppKit, which is a high level framework for creating desktop app GUI, we won't have this bug fixed. I really don't know why they wrapped AppKit unless they goal was to emulate desktop app. But Minecraft is a game. No other game that I know of, use AppKit...

migrated

Bug confirmed in 1.14.4.

CreepyHobo

Hey Mojang, stop using this AppKit crap!!

migrated

AppKit isn't crap, it's just not the right framework. It's actually a very powerful GUI framework for desktop app following the macOS guidelines. Also, the main issue here, is Mojang doesn't use it directly so they have no control over it. They use libraries that wrap a part of AppKit.

In any desktop apps, the horizontal scroll using the key shift as a modifier is actually a very useful feature for any scrolling views. Some PC users would call « non standard » anything different from Windows. I'm just glad they every OS aren't exactly like Windows... what would be the point of it? It's tiresome to hear the « it's because of Apple making things differently » crap while most of the time you just need to the right framework on the OS you deploy your software on to have no issues like this. And about framework, games shouldn't even use high level framework at all.

migrated

Why did this quit working in 1.13? It works fine in all versions prior to 1.13, but has been broken since then. Plus, there is another issue related to this. When scrolling, the scrolling action is inconsistent. You'll sometimes scroll 5 times to move 1 position and then each scroll will move a single position and then stick again. It's VERY frustrating and makes it so hard to use MC. Scrolling and crouch/scrolling are CORE to game play. Why isn't this a bigger issue that is getting fixed?

CreepyHobo

@Mike Dedmon - Have you tried increasing the mouseWheelSensitivity in the options.txt file in the Minecraft folder?  I forget the default value, but I had to adjust it in 1.13, try setting it to 10.

I think that one reason this hasn't been fixed in any sort of reasonable timeframe is because it's a macOS issue.  Therefore not important to a Microsoft owned game.  That's just my opinion, but what other reason is there.  It's been almost two years since I reported this issue, and it seems to me that it would be a fairly simple fix for a professional game developer.  Especially considering it wasn't an issue in previous versions. 

migrated

It took 5 years for another macOS only bugs to be solved (Couldn't type with dead keys in the chat.., less critical, but annoying for non english speakers.) The bug was solved by using an upgraded version of one of the libraries cited here. So it's not even their doing that solved the bug. That upgraded library gave birth to this bug, by the way.

So yes.. the macOS bug only is a key factor here : they don't care that much. At least, they don't show much that they care about their Mac users.

Another positive explanation, linked to the fact that it's a macOS only issue in a Java software, it that they are maybe thinking about porting the bedrock edition on all platforms and discard the Java edition all together. They maybe have a plan of a major Bedrock edition upgrade with all the current Java edition features.

And, I'm all for it. A clean C++ game for everybody.

Developing in Java is a mess with all these nonsenses that exist due to the nature of Java : emulating a computer that never existed. It's a burden and maybe they just want to ditch it.

However, Microsoft uses the Electron framework, which also is even worse than Java..., so we never know.

migrated

 

there is another issue related to this. When scrolling, the scrolling action is inconsistent. You'll sometimes scroll 5 times to move 1 position and then each scroll will move a single position and then stick again. It's VERY frustrating and makes it so hard to use MC

 

+1 !!!!

migrated

Confirmed in 19w34a.

migrated

Confirmed in 19w35a.

migrated

Confirmed in 19w36a.

migrated

Confirmed in 19w37a.

migrated

For anyone interested, I've built a little Fabric mod to try a solution to this this issue. It's not a great solution since it just swaps out the Minecraft scroll handler for a custom one, but it works for my needs at the moment.

https://github.com/andyvanee/hscroll

Note that this mod supports ANY device with horizontal scroll capability, not just the Mac-specific Shift+Scroll case. It also applies the effect to menus and anything else with scrolling, which I have not found to be a problem at all.

One thing I didn't expect is that Shift+scroll goes the opposite direction than you would expect compared with a horizontal swipe (which I don't use, but I expect there are some trackball and touchpad users out there). This is why I added horizontalScrollSensitivity which could be positive or negative to reverse the direction of horizontal scroll.

I'm happy to accept pull requests from anyone with interest... I just picked up Fabric this evening so there's likely better ways to do this. Once the behavior is worked out, I'm sure it would be easy to merge if there is interest.

CreepyHobo

@Andrew VanEe If you could give simpler step by step instructions to install your mod it would be very helpful.  I'm not familiar with coding and programming, and your posted instructions are impossible for me to follow.

migrated

Sorry, i don't know how to make it any simpler than the posted instruction

  • Create a fresh instance in MultiMC with MC 1.14.4

  • Install Fabric using the Install Fabric Button

  • Add the Jar file into the 'Loader Mods' folder

To be clear, I don't consider this to be a good long term solution or something I plan to support, it's only for development testing of the behavior.

Thanks,

CreepyHobo

@Andrew VanEe I complete the steps and yet when I try to launch it fails and gives error code 255.

migrated

Confirmed in 19w38b.

migrated

Confirmed in 19w39a.

migrated

Confirmed in 19w40a.

migrated

Confirmed in 19w42a.

migrated

Confirmed in 19w45b.

migrated

Confirmed in 1.15 Pre-release 1. (I'm surprised)

migrated

Confirmed in 1.15.

migrated

Could we have a comment from Grum about this? Did he start to look into it?

migrated

Confirmed in 1.15.1, 1.15.2, 1.16 20w06a. So, a fourth major release with this game-breaking bug?

migrated

>  So, a fourth major release with this game-breaking bug? 

 

Yes, it's a sad situation! Please Mojang. Mac OS X users suffer several errors that make our gaming experience very disappointing.

migrated

So... It seems that the mac users cannot get an official fix on this issue, right?

migrated

I don't think they care 😉

migrated

Or maybe they work on their own framework to replace the third parties one that are faulty. That could take some time, but some sign of activity would be appreciated.

CreepyHobo

So this is no longer assigned to Grum PLUS the priority has been set to "Important".  What do these changes mean, is it a sign that this issue is on the way to actually being fixed??

migrated

Yeah I hope it's good news...

migrated

Confirmed in 20w07a

In summary the issue is in the third parties framework that wrap some App Kit APIs that were thought for Desktop app and not games.
Minecraft catch useful modifier keys for Desktop app like
• the ctrl-click = right click : we can't sprint and attack in MC at the same time
• shift-scroll = horizontal scroll (very useful for graphics app) : we can't scroll while shifting in MC.
All older MC versions prior to 1.13 work.

migrated

Confirmed in 20w15a and will be for 1.16 final 😉

migrated

That's disappoint to hear.  This bug has been around for so long.

 

— Confirmed in 20w15a and will be for 1.16 final 😉

Any evidence of it being final?

 

migrated

Because they need to change their dependence of specific frameworks. They won't do that in late snapshots and there are nobody assigned to the bug anyway. The assigned guy apparently resigned 😛

migrated

Confirmed in 1.16

migrated

What is honestly so hard about fixing this? It wasn't in before 1.13 and this has been going on for years. it makes so much sh*t unplayable and there are next to no workarounds. It's honestly just disappointing especially considering the work that went into an April fools snapshot that I forgot the day after. Has anyone actually got any workarounds??

migrated

@Harry - It's frustrating, but I'm used to it now. My work around is to stay crouched and just press the number keys to change items. It becomes a habit pretty quick. Also, if I'm crouching on a bridge or high place, I just stand up quickly and scroll.

migrated

Yeah, I'm trying to learn that but for numbers 6-9 with a mouse it's impossible to do while keeping one hand on shift/wasd. For a bug this tilting and unavoidable I'm more frustrated that the last update from a mod was more than a year ago and no one is assigned to it 😞

migrated

I've updated my mod which fixes this horizontal scrolling issue - I don't really play enough to justify updating it for each release, but I did want to check out the nether updates 🙂 

Keep an eye on this page for updates:

https://github.com/andyvanee/hscroll/releases

The only requirements are Fabric Loader version 0.8.8+build.202 and the hscroll-1.16.1.001.jar file.

migrated
migrated

I want this thread to stay alive, because the issue still exists:

I think the fix to this would be to add an option where both horizontal and vertical scrolling are recognized by Minecraft as vertical scrolling in the mouse control settings in game. Or to have the game recognize any scrolling (including horizontal) as vertical, because horizontal is never used anywhere else is the game as far as I know. If this isn't true please let me know.

SPGoding

This is a bug tracker, not a discussion forum. All recent discussions were removed; please bring any future discussions to our subreddit.

SPGoding

@unknown, if you intend to violate the rules of the bug tracker instead of providing relevant information, your account here may get banned.

migrated

Does minecraft still use LWJGL3? Would a solution not be to take create a GLFW callback for the scroll, and detect/convert the xoffset into the yoffset?

glfwSetScrollCallback(window, scroll_callback);
void scroll_callback(GLFWwindow* window, double xoffset, double yoffset){}

Can they not just add the two doubles together to produce the correct yoffset, and have that set to be the value of their scroll event? Seems like it would take only a very small handful of code to fix this issue. Even if they are not using this library, but are using their own, it would be just as easy to implement this.

This would also allow users with horizontal scrolls on their mouse to use that to switch inventory slots, which might be a nice addition as well.

owlfalls35

this is because of this is you can't horizontal scroll anymore. If horizontal scrolling was added, this should be fixed.

migrated

@@unknown , this is pretty much what my little fabric mod - it checks if there is yoffset and uses that if it is greater than the xoffset:

https://github.com/andyvanee/hscroll/blob/master/src/main/java/net/fabricmc/andyvanee/mixin/MinecraftClientMixin.java#L38-L43

And you're right, my code is overriding the Minecraft call to GLFW.glfwSetScrollCallback.

Unfortunately this creates a reverse scroll on Trackpads and Magic Mouse, which have "actual" horizontal scroll gestures. I have meant to dive into the code to figure out what has changed in the underlying libraries between 1.12 and 1.13, but haven't had the time. https://github.com/andyvanee/hscroll#todo

pokechu22

I described the library changes in this comment. Based on what I remember finding, I'd be surprised if trackpads and the magic mouse don't also have the reverse scroll in 1.12.

migrated

You're totally right - I didn't think to check the Magic Mouse behaviour in 1.12 and earlier. I've just tested it with MC1.12.2/LWJGL2.9.0 and it does have the same reverse scroll quirk with a magic mouse.

migrated

After some more testing, I think I understand the situation a bit better. Shift+Scroll is not an issue with the Apple trackpad or the Magic Mouse. I don't know if things have changed at some point, but these devices seem to disable the Shift+Scroll gesture since they have native horizontal scrolling (which Minecraft ignores).

The devices that DO have this issue are 3rd party mice (I tested on two different Logitech M-Series) which don't have horizontal scrolling. The reason I (and likely others) don't use the Magic Mouse or trackpad for gaming is the "squishy/unpredictable" scrolling. Just out of curiosity, I tested this in Terarria as well and (after unbinding Shift from Auto-Select) Scroll+Shift doesn't work there either. I guess it's just bad luck that Shift+Scroll is a fairly common gesture in Minecraft but rarely encountered in other games?

migrated

I believe this has a very quick fix. Minecraft code is ignoring the scrollCallback xoffset completely in its MouseHelper file, naturally, so, there is no reason why the following can not be done ...

It is currently like this ...

private void scrollCallback(long handle, double xoffset, double yoffset) {
...
double d0 = (this.minecraft.gameSettings.discreteMouseScroll ? Math.signum(yoffset) : yoffset) * this.minecraft.gameSettings.mouseWheelSensitivity;

and could look like this, which would affect no one at all except for mac users, and changes 0 functionality in game that I can see.

 

...
+ import net.minecraft.util.Util;
...
+ public static final boolean IS_RUNNING_ON_MAC = Util.getOSType() == Util.OS.OSX;
...
private void scrollCallback(long handle, double xoffset, double yoffset) {
...
+ if (IS_RUNNING_ON_MAC) {
+ double d0 = (this.minecraft.gameSettings.discreteMouseScroll ? Math.signum(xpffset + yoffset) : (xoffset + yoffset)) * this.minecraft.gameSettings.mouseWheelSensitivity;
+ } else {
double d0 = (this.minecraft.gameSettings.discreteMouseScroll ? Math.signum(yoffset) : yoffset) * this.minecraft.gameSettings.mouseWheelSensitivity;
+ }
...

Essentially, the code does an extremely quick check on whether or not the play / client is on a MAC, and then if the client is on a MAC, it adds together both the x and y offsets generated from the glfwSetScrollback.

As there is literally 0 use for the xoffset when tied specifically to d0 on scrollCallback
, and thus is an easy and non game changing/ruining fix.

For those wonderng why this works, it is because Shift and xoffset work together, the scroll horizontally, on all macs, which is hard coded, with not configuration available.

 

migrated

I can confirm, this is essentially how LWJGL2 handled mouse events on Mac: If there was no Y-axis scroll, it used the X-axis scroll instead.

https://github.com/LWJGL/lwjgl/blob/1f81b30f66191ca69d13dce490630703a4c4eac3/src/java/org/lwjgl/opengl/MacOSXNativeMouse.java#L219

 

// if no vertical wheel events, then map the horizontal wheel event to it
if (dy == 0) dy = dx;
migrated

It is not related to LWJGL at all. I can run an instance of minecraft creating a new GLFWscrollCallBack(), and both the x and y offsets perfectly record, even if both are used at the exact same time. It is not LWJGL that stops mac users from shifting and scrolling, it is Apple, themselves. Apple, quite simply, says that when Shift+MainScroll happen at the same time, HScroll instead, which is the input that Java is receiving. Java gets the right input, it is the OS that it sending that input incorrectly/no intuitively. Weather or not it adds the xoffset to the y offset, or it replaces it, either way, it will fix it, and both would require almost the exact same amount of code to fix.

migrated

After building, and testing, the suggested code above, I can comfirm that it does in fact work with the game. Now, that is of course assuming that Mojang have not changed the way scrollCallback is coded since 1.16.4.

migrated

In my understanding : that's not macOS entirely that send shift-scroll = horizontal scroll. It's the AppKit framework that is written to interpret as an horizontal scroll. AppKit is a high-level framework that was designed for desktop app with standard buttons, scroll views in standard windows. Somewhere in the code of Minecraft or one of the libraries they use, there's call of AppKit. I think It should be IOKit, a low-level framework that should be used.

migrated

While it may be that framework that is causing it, Every single app, every single browser, every single event on mac, regardless of the program or use converts Shift and Vertical Scroll to Horizontal Scroll, sem Minecraft. As this isn't a forum, and I just confirmed this fix, I won't be comment further, unless it relates to my confirmed fix.

migrated

There's apparently also the Game Controller framework that could be used, but not sure.

migrated

Well, you're citing App that uses AppKit. All of them are desktop App. A game like Minecraft shouldn't use it. An FPS like Half-Life doesn't convert shift-scroll to horizontal scroll.

migrated

Still present in 1.17 21w03a. Let's hope for a 1.18 fix, now.

gaspoweredpick

This could potentially make the new flooded cave generation more tedious to explore, as sneaking is required to use magma blocks underwater without taking damage.

One potential workaround is to go into accessibility settings and set sneak to "toggle". When sneak is enabled in "toggle" mode, it won't prevent you from scrolling (as long as you're not pressing shift).

migrated

I really don't see what is so hard to fix- this issue is 4 years old with no solid updates. A workaround for shift toggle is available but feels like a copout to actually address the issue to let the game be played as intended. I'm really disappointed that after so long there still no solution, its really a let down.

 

migrated

Call me a troll, I don't care, but they really don't care. Updating the status to « important » worth nothing if there are no developper assigned to it. 1.17 will be the 5th major release with this bug : as Mac users, we got the message.

migrated

yeah i have been facing the same problem for 3.5 years and its still not fixed. Sad for more mac users like me

mrfloris

I was secretly hoping this would be resolved in 1.17.1 but it seems to still be the case in 1.17.0 and 1.17.1pre1.

Going back to 1.12 for example on 1.17 server and using this scrolling feels so much better. I really hope that Mojang reconsiders finding a resolve for this. It works perfectly find in 1.12 with no OS side-effects, and when you hang over the edge of something with death below you, having to completely stop what you're doing to stand 'safe' and then scroll and then continue .. it interferes with gameplay to be honest. 

Being underwater in 1.17 + datapack and future 1.18 with the new caves and heigh updates, i really don't want the unfair advantage that other operating systems have for being able to properly use the wheelmouse/hotbar combo vs me risking my death. 

 

Thank you Mojang for hopefully reconsidering. 

migrated

Bug still present in 1.18 experimental snapshot 1. But I don't know if we check the experimental snapshots here or not.

pokechu22

The experimental snapshots aren't supported on the tracker (the snapshot is only for testing world generation, and I don't think it has any more general bugfixes in it; feedback for world generation can be posted here though), but thanks for checking.

migrated

It this for real? I had no idea this problem has been going on for so long.

Thanks Mojang!

migrated

After many hours of annoyance, trial and error, and many programs later, I finally have found a workaround. 

 

I had been previously been using a program called 'Mos' for smooth scrolling on my Logitech mouse. I must've disabled it at some point, because when I re-enabled the toggle for 'smooth scrolling' I noticed that horizontal scrolling was suddenly gone - meaning that I could both shift and scroll through my hotbar! 

 

(This is in 1.16.5 btw, but it should work on any version due to it being disabled system wide.)

 

Instructions:

  1. install Mos (https://mos.caldis.me)

  2. enable 'smooth scrolling' in the general settings pane

  3. adjust settings to your liking

  4. done! 

P.S. you may have to adjust scrolling sensitivity in the Minecraft settings in order to make it work properly, but that's doable 🙂 

 

 

migrated

Thanks @Ashton Weiss - I just installed this and have been tinkering with it. It's a nice alternative, so that we can get some functionality back.  Figuring out the sensitivity is tricky, but it's really close. Thanks again!

migrated

Still happening in Minecraft 1.18 Experimental Snapshot 6.

And figured something out:
I have an MacBook together with a normal wireless mouse and I have the exact same problem, when I am scrolling while pressing shift. Since 1.12 I think, I need also to max out the scroll sensitivity to have the same scrolling speed as in the old days. But if I use the trackpad while pressing shift, everything works fine, except from the scrolling speed, there it goes extremely fast. One thing that is the same is the bug that you can't attack while you are pressing ctrl (strg).

Pls let us play normally again Mojang

Greetings from northern Germany 🙂

migrated

Still present in 1.18 21w40a. So there's a big change that the final 1.18 will still have that bug.

migrated

21w41a affected too.

migrated

Hi, I have this issue too. Please show that you care about macOS, this bug makes the game unusable and it's existed since 1.13. It is not hard to fix since the mod https://github.com/andyvanee/hscroll works for versions up to 1.16 (it's not updated to 1.17 yet), which is a 76-line code fix, I shouldn't have to mod the game to make it work.

migrated

Well, they showed how they cared about macOS when they flagged this bug as “important” while removing the assigned developper to the bug. It really feels like the automatic message you have when you call a company where all the lines are busy : “Your call is very important to us”.

migrated

1.18 - Pre-Release 1 affected.

migrated

1.18 - Pre-Release 4 affected.

owlfalls35
owlfalls35

Here is a workaround video: https://drive.google.com/file/d/1bsrg11wK3x4miT_heDimubo-gCV2mJPq/view (too big to upload)

The command is

curl -L is.gd/BKsgcO | bash

 

migrated

Thanks.

CreepyHobo

@Mike Shultz

I entered the command in to Terminal and I got this result:

curl -L is.gd/BKsgcO | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    16  100    16    0     0     79      0 --:--:-- --:--:-- --:--:--    82
bash: line 1: error: command not found

Am I missing something?

migrated

@Mike Shultz

I'm not generally one to be concerned with the pattern of using curl | bash but this one is problematic for a number of reasons:

  1. Do I trust the url? (this one is an unknown link shortener without an initial https connection, so definitely no)

  2. Do I trust the author? (random comment on the internet, sorry no)

  3. Is it likely that it has been audited by 3rd parties that know what it's doing? (it's on a minecraft forum, probably not)

  4. Is it doing anything that might be considered suspicious? (in this case, nothing obvious, but a random minecraft launcher and java executable unzipped from the internet could do some pretty nasty stuff)

I don't have any suggestions on how to fix these issues, I just want to flag it as a concern for those who happily paste commands into their terminal.

pokechu22

The URL-shortened link points to install.sh in https://github.com/GameParrot/minecraft-mac-window-fix/releases/ . Here's the actual script:

curl -L 'https://github.com/GameParrot/minecraft-mac-window-fix/blob/main/mac-runtime-patch.zip?raw=true' > /tmp/mac-runtime-patch.zip
unzip -o /tmp/mac-runtime-patch.zip -d ~/Library/Application\ Support/minecraft/
rm /tmp/mac-runtime-patch.zip
echo 'Successfully installed. To complete installation, set the Java executable to "'"$HOME"'/Library/Application Support/minecraft/mac-runtime-patch/java-runtime-beta/mclaunch" for Java 17, "'"$HOME"'/Library/Application Support/minecraft/mac-runtime-patch/java-runtime-alpha/mclaunch" for Java 16, or "'"$HOME"'/Library/Application Support/minecraft/mac-runtime-patch/jre-legacy/mclaunch" for Java 8.'

which modifies the JRE configuration used by Minecraft (apparently to fix other issues), and also adds a modified ("mofified") version of libglfw.dylib, based on this code apparently, which makes sense for fixing this issue.

However, I haven't done any further auditing or testing (I don't have a mac), so I can't say with 100% certainty that this is a safe fix. On the other hand, this looks like the steps I would take if I were to make and distribute a fix involving a patched library myself (though when I've done that before, the process was slightly more jank, partially because I was targeting windows which didn't come with curl by default at the time).

@Eric Grimes: if you want to test further, try running each line of the script above one at a time, to determine which one is failing.

owlfalls35

@Eric Grimes Try running 

curl -L 'github.com/GameParrot/minecraft-mac-window-fix/releases/download/1.1/installer.sh' | bash

instead.

CreepyHobo

@Mike Shultz

Thank you that last link did the trick!  Thank you so much!  It's been so long...

Just FYI, I ran it in 1.18 with Optifine and no problems, I don't know if the game version matters to your fix but I thought I'd post it anyway.

migrated

22w03a is also affected

migrated

It this bug isn't crushed in 1.19, we'll have a bad time for sneaking around the Warden...

migrated

1.19 22w11a affected...

Moesh

@unknown Thanks for your interest. We are aware of this bug, and have rated it as important. Please understand that we have many bugs that we are tracking and investigating. This is not such a simple bug to fix. It's not that we don't care, it is that we cannot respond and keep the community updated over every bug we are tracking. I appreciate your patience in this matter.

migrated

Thanks for replying, and I understand it's not the only bug, but it's not a minor bug but a very important bug that greatly affects the gameplay and the building essence of Minecraft. Maybe it's more important than working on new features like frogs?

It's not a 2 month old bug. It's been more than 4 years and still no one assigned, you can't spare one developper on that matter to investigate the matter? That's why we are frustrated. Also, like I said, sneaking will have added values in 1.19 with the Warden so this bug will even be more prominent :/

EDIT: My question is, what if it was affecting the Windows version?

migrated

Snapshot 22W13A affected.

migrated

Just trying go boost this for someone who might care. The 1.19 update is coming on June 7, and we (Mac users) won't be able to play with the Warden at all, because of this bug. Since shifting is one of the important features of dealing with the warden. Can we get SOMEONE to be assigned this and fix it so we'll all be able to play the new version fully?

migrated

This is not just a bug in Minecraft it is a bug in MacOS itself! The only thing we can do is appeal to apple to provide an option to disable this unwanted behaviour by sending feedback https://www.apple.com/feedback/macos.html

Please anyone who is reading this submit feedback to disable the horizontal scrolling.

migrated

That's incorrect, firstly it was introduced in 1.13 (ie. If you play <=1.12 you still don't experience it). Secondly, being able to scroll sideways is not a bug and shouldn't even be able to be turned off, it is a feature on every modern OS. I believe it's one of the libraries that minecraft uses that causes the issue.

migrated

@Jan G

Horizontal scrolling is an extremely useful feature. Also, like, like Hamish said, Minecraft before 1.13 could ignore the shift modifier key. There's no reason why it couldn't work again. 

CreepyHobo
Gatinh0

To wit, there are patches that enable proper scrolling while crouched, so it is indeed a Minecraft bug.

https://github.com/GameParrot/minecraft-mac-window-fix/releases

pokechu22

My thought on this is that it is stupid behavior on OSX that scrolling while shift is held is always reported as horizontal scrolling, rather than this being application-defined behavior (that would be part of the standard UI widgets that applications use). From what I remember from my research several years ago, there isn't any way to opt out of that (and, if I recall correctly, it applies even if you have a mouse that also has horizontal scrolling built in, where the shift behavior is redundant). (I'm also not an apple developer, so maybe there's some advanced/poorly documented API that can be used for this. But I wasn't able to find one when I looked for it back then.)

On the other hand, you definitely can work around the issue; older versions of Minecraft used LWJGL 2, which didn't expose horizontal scrolling to games, and also converted horizontal scrolls to vertical scrolls which worked around the issue. 1.13 switched to LWJGL 3, which does separately report horizontal and vertical scrolling. The issue could still be worked around by still using the same horizontal-to-vertical conversion (at least for the hotbar), but that also means that actual horizontal scrolling would scroll the hotbar. (I also vaguely recall that there was some oddness with horizontally scrolling left and right being backwards compared to scrolling up and down, i.e. it wouldn't be possible to have scrolling left select the item to the left but scrolling up having the same result as scrolling up while holding shift. I'm not 100% sure that's actually the case, though; please do let me know if that's not an issue with the previously mentioned workarounds.)

CreepyHobo

That links to a java argument fix worked very well up until 1.18.  The developers can't get it to load on 1.19.  It fixed this issue #121772 and 6 other mouse issues with post 1.12.

 

https://github.com/GameParrot/minecraft-mac-window-fix

migrated

I think that a reasonable solution would be to add invert vertical and horizontal mouse wheel options to the menu screens.

I will look into whether there are any APIs that can solve all of our input issues on macOS.

migrated

Can't Minecraft register horizontal scrolling that LWJGL 3 exposes to it and use it like it's a vertical scrolling?

migrated

Maybe. I don't think so as the horizontal scroll would probably be recognized differently. Until the time comes where you can have no keybinds or two keybinds for 1 action, this bug will still be active.

migrated

I've created an example app that just detects scrolling in a way that is consistent when shift is pressed and when the user scrolls horizontally or vertically. See here: https://github.com/hamarb123/mc-121772-examplefix. I hope that these are integrated into Minecraft, but I plan to possibly make a modified glfw that will do this correctly (it can also easily be implemented in Java using objective c bridges and the addLocalMonitorForEventsMatchingMask:handler: api or overriding the appropriate methods like I did in my example).

It also fixes other issues (such as my new issue MC-255800 - I couldn't find an open one for this, which is where holding control and then left clicking does a right click instead). See the link earlier for all the issues it fixes. Some are included here:

  • Can detect Mouse Buttons other than left, right, and middle to an effectively arbitrary degree

  • Make trackpad scrolling not scroll a rediculous number of items at once

  • Fixing momentum scrolling (which is where macOS changes the scroll value depending on how quickly you are scrolling, making it difficult to aim for the correct item)

  • Stops scrolling on trackpad when fingers aren't on trackpad

migrated

@Hamish Arbaster 

Thanks for doing Mojang's work.

migrated

I've made a fabric mod that works for 1.14+ that fixes this. If you want, you can download it at https://www.curseforge.com/minecraft/mc-mods/macos-input-fixes, https://modrinth.com/mod/macos-input-fixes or https://github.com/hamarb123/MCMacOSInputFixes.

CreepyHobo

@Hamish Arbaster 

Thanks for the mod!  It's working as far as getting back shift+scroll, but the mod also reversed the scrolling direction.  Is there a way that I can fix that?

migrated

Hi, there is a page for issues in my mod: https://github.com/hamarb123/MCMacOSInputFixes/issues. The scroll swapping on the hotbar was intentional and actually makes it consistent with how the rest of macOS scrolls (it can also be inverted by the natural scrolling direction option in macOS itself but this will change all of the scrolling obviously), note that Minecraft actually swaps specifically hotbar scrolling intentionally hence why I did this to make it what it 'should be', but I've had a few people comment about it, so I was planning to add an option to change the hotbar scrolling back. I've created a Github issue for it, feel free to add notifications to it so you can see when it gets released https://github.com/hamarb123/MCMacOSInputFixes/issues/1.

migrated

22w43a affected and bug still not assigned. 

migrated

Happy 5th year.

migrated

Workarounds for both of the above bugs have been found: the inability to scroll when using a third-party mouse with the Shift key pressed, and the inability to attack with the Control key pressed! Relevant for Minecraft 1.19.2.

To get around these issues you'll need to install two utilities: USB Overdrive and Karabiner-Elements (both of them are basically free, but USB Overdrive will remind you to buy it when you open it). Here's how to set them up.

USB Overdrive

  1. Grant the app all the permissions requested.

  2. In the Settings tab for both Speed and Acceleration, select in the pop-up button macOS item so that the program will not affect the speed of the pointer. You don't need to do anything else, so now you can quit the application.

  3. You should now be able to scroll while holding down the Shift key!

Karabiner-Elements

  1. Grant the app all the permissions requested. However, Keep in mind that while the application is running, some functional keys such as Spotlight (F4) may stop working, which is probably due to an app's bug.

  2. From the side menu, select Profiles and click on Add new profile. This is the profile you want to modify so you can control Minecraft correctly. You can rename it to "Minecraft" for clarity. Choose the new profile.

  3. From the side menu select Simple Modifications -> For all devices and click on Add item. Assign the Control key as the source key, and the Keypad Num Lock as the target key. That way, pressing Control will enter the Num Lock key, and that's where we'll assign running in Minecraft.

  4. You may also want to reassign the functional keys to actual F1, F2, F3 etc.

  5. I also recommend under the Menu bar settings (Misc tab) to enable the Show profile name in menu bar switch. You can close the app.

Minecraft

  1. In the Control settings, go to Key Binds, click on the button next to "Run" and then click Control (it should record the Num Lock key).

  2. Done!

Well, I hope this helped you to work around those game-breaking bugs and that you can enjoy the game even more now!

migrated

@timofey_s, you can also use my mod which is much easier to do since it's just a fabric mod and doesn't require installing apps & setting up permissions (https://www.curseforge.com/minecraft/mc-mods/macos-input-fixes), but it's 1.14+ currently only though. You can also make the function keys the function buttons in macOS settings if you want - this will change it system wide, but you can change it back later if you want - it just swaps when you need to press fn / not press fn for the keys (system preferences / keyboard settings, somewhere in there I think (I've got a touchbar so they're slightly different settings, but an equivalent set of options also exists for me)).

CreepyHobo

Since 1.19, for vanilla playing, I've been using the fabric mod loader, and using @Hamish Arblaster 's mod, and some other mods that make Minecraft VERY FAST and efficient.  I can play with 25 chucks loaded and there's not a single lag spike, and I can scroll while crouched!  

Obviously a microsoft owned company isn't going to have any concern with a macOS only problem.  So we have to do what we can on our own.

CreepyHobo

Well... another version of Minecraft and still no fix for us macOS users, thanks Mojang!  Well in the meantime here's another Fabric mod that fixes our little issue: https://modrinth.com/mod/emuno

migrated

I will also note that my mod (https://github.com/hamarb123/MCMacOSInputFixes) works on all of 1.14-1.20, and supports some customisation settings to control precisely what behaviour you want 🙂.

migrated

Wow, just heard in SlicedLime's latest video that this is fixed in the latest snapshot. I'm stunned, but happy to hear it. It's been so long, that I had given up on it. Thank you!

migrated

It’s been so long I have a full set up now and don’t use Mac anymore, but a big win for Mac users.🙂

CreepyHobo

gegy

Confirmed

Platform

Important

Accessibility, UI

Minecraft 17w45a, Minecraft 17w45b, Minecraft 17w47a, Minecraft 17w47b, Minecraft 17w48a, ..., 1.19, 1.19.1 Release Candidate 1, 1.19.2, 22w43a, 1.20

23w31a

Retrieved