# Allow Mouse Wheel For Input Key Selector

**URL:** <https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074>\
**Category:** Blueprint\
**Tags:** unreal-engine, question, key-bind\
**Created:** [June 21, 2019, 5:34pm UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074 "2019-06-21T17:34:37Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tsybe](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/tsybe/32/590281_2.png) [@Tsybe](https://forums.unrealengine.com/u/Tsybe)\
**Post date:** [June 21, 2019, 5:34pm UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/1 "2019-06-21T17:34:37Z")

</div>

Hey! How can i set or allow the mouse wheeling for Input Key Selector. I tried to looking for answer for this question but i don’t found, just more older questions without answer.

---

<div class="post-metadata">

**Author:** ![Elias11022](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Elias11022](https://forums.unrealengine.com/u/Elias11022)\
**Post date:** [June 21, 2019, 5:40pm UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/2 "2019-06-21T17:40:15Z")

</div>

Can be found under Project settings - Engine - Input

---

<div class="post-metadata">

**Author:** ![Tsybe](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/tsybe/32/590281_2.png) [@Tsybe](https://forums.unrealengine.com/u/Tsybe)\
**Post date:** [June 21, 2019, 5:51pm UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/3 "2019-06-21T17:51:24Z")

</div>

I can’t find this possibility to allow mouse wheeling for Input Key Selector.

---

<div class="post-metadata">

**Author:** ![b1016103](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@b1016103](https://forums.unrealengine.com/u/b1016103)\
**Post date:** [July 8, 2019, 2:57pm UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/4 "2019-07-08T14:57:39Z")

</div>

Elias must have misread your question. There’s no such a setting under Engine-\>Input.

Input Key Selector completely ignores mouse wheel actions as of 4.22.1, which seems to be either a bug or an oversight.

---

<div class="post-metadata">

**Author:** ![Gratch](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Gratch](https://forums.unrealengine.com/u/Gratch)\
**Post date:** [August 26, 2019, 3:32am UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/5 "2019-08-26T03:32:41Z")

</div>

Mouse wheel key binding is working in 4.22.1. If it’s not working in your project, then you have to hunt down every single one of its event calls. As far as I know, it can only be used once. The first blueprint that calls a mouse wheel event will consume it, and it will not work anywhere else. Choose the placement of your ONE mouse wheel call wisely. I suggest placing it in either your character’s blueprint or its controller. Then, from there, you can add an event dispatch that’s triggered by the mouse wheel event. Next, go to any other blueprint needing a mouse wheel event. From there, cast back to your char’s bp (preferably on event-begin-play), and bind its event dispatch to this other bp’s triggering event which requires the mouse wheel input.

---

<div class="post-metadata">

**Author:** ![nick\_absent](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/nick_absent/32/632584_2.png) [@nick\_absent](https://forums.unrealengine.com/u/nick_absent)\
**Post date:** [August 30, 2019, 11:03pm UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/6 "2019-08-30T23:03:06Z")

</div>

[This is my older topic](https://answers.unrealengine.com/questions/815430/input-key-selector-does-not-take-the-mouse-wheel-i.html) with the same question, and still looking for any decision.

---

<div class="post-metadata">

**Author:** ![Vioxtar](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Vioxtar](https://forums.unrealengine.com/u/Vioxtar)\
**Post date:** [January 17, 2025, 10:34am UTC](https://forums.unrealengine.com/t/allow-mouse-wheel-for-input-key-selector/451074/7 "2025-01-17T10:34:04Z")

</div>

If you’re willing to modify the engine, you can avoid awkward Blueprint workarounds by modifying two files and solving it the “right” way. It was relatively straightforward to figure out how to do this since similar functions already existed, so my guess is this is indeed an oversight by Epic and I’m not sure how it hasn’t been patched yet (surely they ran into it themselves in their own games?)

The solution:

Put this:

> SLATE\_API virtual FReply OnMouseWheel(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;

…into SInputKeySelector.h inside the SInputKeySelector class, preferably next to the other ‘OnKeyDown’ esque functions. Then, in SInputKeySelector.cpp:

> FReply SInputKeySelector::OnMouseWheel(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent)  
> {  
> FKey MouseWheelKey = MouseEvent.GetWheelDelta() \> 0 ? FKey(EKeys::MouseScrollUp) : FKey(EKeys::MouseScrollDown);  
> EModifierKey::Type ModifierKey = EModifierKey::FromBools(  
> MouseEvent.IsControlDown() && MouseWheelKey != EKeys::LeftControl && MouseWheelKey != EKeys::RightControl,  
> MouseEvent.IsAltDown() && MouseWheelKey != EKeys::LeftAlt && MouseWheelKey != EKeys::RightAlt,  
> MouseEvent.IsShiftDown() && MouseWheelKey != EKeys::LeftShift && MouseWheelKey != EKeys::RightShift,  
> MouseEvent.IsCommandDown() && MouseWheelKey != EKeys::LeftCommand && MouseWheelKey != EKeys::RightCommand );
> 
> // Don’t allow chords consisting of just modifier keys.  
> if ( bIsSelectingKey && (bAllowGamepadKeys || MouseWheelKey.IsGamepadKey() == false) && ( MouseWheelKey.IsModifierKey() == false || ModifierKey == EModifierKey::None ) )  
> {  
> SetIsSelectingKey( false );
> 
> ```
> if (bEscapeCancelsSelection && (MouseWheelKey == EKeys::Escape || IsEscapeKey(MouseWheelKey)))
> {
> return FReply::Handled();
> }
> 
> SelectKey(
> MouseWheelKey,
> ModifierKey == EModifierKey::Shift,
> ModifierKey == EModifierKey::Control,
> ModifierKey == EModifierKey::Alt,
> ModifierKey == EModifierKey::Command);
> return FReply::Handled();
> 
> ```
> 
> }  
> else if (!bIsSelectingKey && Button.IsValid())  
> {  
> return Button-\>OnMouseWheel(MyGeometry, MouseEvent);  
> }
> 
> return SCompoundWidget::OnMouseWheel(MyGeometry, MouseEvent);  
> }

I just tested it now and it seems to work fine, I may have overlooked some details but it gets the job done
