UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SInputKeySelector.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Misc/Attribute.h"
7#include "InputCoreTypes.h"
8#include "Layout/Margin.h"
10#include "Fonts/SlateFontInfo.h"
11#include "Input/Reply.h"
15#include "Styling/SlateTypes.h"
16#include "Styling/CoreStyle.h"
18#include "Layout/Visibility.h"
19
20class SButton;
21class STextBlock;
22
27{
28public:
31
34 , _ButtonStyle( &FCoreStyle::Get().GetWidgetStyle<FButtonStyle>( "Button" ) )
35 , _TextStyle( &FCoreStyle::Get().GetWidgetStyle< FTextBlockStyle >("NormalText") )
36 , _KeySelectionText( NSLOCTEXT("InputKeySelector", "DefaultKeySelectionText", "...") )
37 , _NoKeySpecifiedText(NSLOCTEXT("InputKeySelector", "DefaultEmptyText", "Empty"))
42 {}
43
45 SLATE_ATTRIBUTE( FInputChord, SelectedKey )
46
47
49
50
51 SLATE_ATTRIBUTE( FMargin, Margin )
52
53
55
56
58
59
60 SLATE_ARGUMENT( FText, KeySelectionText )
61
62
63 SLATE_ARGUMENT(FText, NoKeySpecifiedText)
64
65
66 SLATE_ARGUMENT( bool, AllowModifierKeys )
67
68
69 SLATE_ARGUMENT( bool, AllowGamepadKeys )
70
71
73
74
75 SLATE_ARGUMENT( TArray<FKey>, EscapeKeys )
76
77
78 SLATE_EVENT( FOnKeySelected, OnKeySelected )
79
80
81 SLATE_EVENT( FOnIsSelectingKeyChanged, OnIsSelectingKeyChanged )
82
83
84 SLATE_ARGUMENT(bool, IsFocusable)
86
87 SLATE_API void Construct( const FArguments& InArgs );
88
89public:
90
93
96
99
101 SLATE_API void SetButtonStyle( const FButtonStyle* ButtonStyle );
102
105
108
111
113 void SetAllowModifierKeys(const bool bInAllowModifierKeys) { bAllowModifierKeys = bInAllowModifierKeys; }
114
116 void SetAllowGamepadKeys(const bool bInAllowGamepadKeys) { bAllowGamepadKeys = bInAllowGamepadKeys; }
117
120
122 bool GetIsSelectingKey() const { return bIsSelectingKey; }
123
126
127public:
128
129 SLATE_API virtual FReply OnPreviewKeyDown( const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent ) override;
130 SLATE_API virtual FReply OnKeyDown(const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent) override;
131 SLATE_API virtual FReply OnKeyUp( const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent ) override;
134 SLATE_API virtual void OnFocusLost( const FFocusEvent& InFocusEvent ) override;
136 virtual bool SupportsKeyboardFocus() const override { return true; }
137
138private:
139
141 SLATE_API FText GetSelectedKeyText() const;
142
144 SLATE_API FMargin GetMargin() const;
145
147 SLATE_API FReply OnClicked();
148
150 SLATE_API void SelectKey( FKey Key, bool bShiftDown, bool bControllDown, bool bAltDown, bool bCommandDown );
151
153 SLATE_API void SetIsSelectingKey(bool bInIsSelectingKey);
154
156 SLATE_API bool IsEscapeKey(const FKey& InKey) const;
157
158private:
159
161 bool bIsSelectingKey;
162
164 TAttribute<FInputChord> SelectedKey;
165
167 TAttribute<FMargin> Margin;
168
170 FText KeySelectionText;
171
173 FText NoKeySpecifiedText;
174
176 bool bAllowModifierKeys;
177
179 bool bAllowGamepadKeys;
180
182 bool bEscapeCancelsSelection;
183
185 TArray<FKey> EscapeKeys;
186
188 FOnKeySelected OnKeySelected;
189
191 FOnIsSelectingKeyChanged OnIsSelectingKeyChanged;
192
194 TSharedPtr<SButton> Button;
195
197 TSharedPtr<STextBlock> TextBlock;
198
200 bool bIsFocusable;
201};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define SLATE_STYLE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:280
#define SLATE_ATTRIBUTE(AttrType, AttrName)
Definition DeclarativeSyntaxSupport.h:192
#define SLATE_BEGIN_ARGS(InWidgetType)
Definition DeclarativeSyntaxSupport.h:63
#define SLATE_EVENT(DelegateName, EventName)
Definition DeclarativeSyntaxSupport.h:458
#define SLATE_END_ARGS()
Definition DeclarativeSyntaxSupport.h:116
#define SLATE_ARGUMENT(ArgType, ArgName)
Definition DeclarativeSyntaxSupport.h:208
#define DECLARE_DELEGATE(DelegateName)
Definition DelegateCombinations.h:20
return true
Definition ExternalRpcRegistry.cpp:601
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition CoreStyle.h:15
Definition NavigationReply.h:43
Definition Reply.h:24
Definition Text.h:385
Definition SButton.h:33
Definition SCompoundWidget.h:22
Definition SInputKeySelector.h:27
virtual bool SupportsKeyboardFocus() const override
Definition SInputKeySelector.h:136
SLATE_API FInputChord GetSelectedKey() const
Definition SInputKeySelector.cpp:59
DECLARE_DELEGATE_OneParam(FOnKeySelected, const FInputChord &) SLATE_BEGIN_ARGS(SInputKeySelector)
Definition SInputKeySelector.h:29
virtual SLATE_API FReply OnPreviewKeyDown(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent) override
Definition SInputKeySelector.cpp:141
bool GetIsSelectingKey() const
Definition SInputKeySelector.h:122
SLATE_API void SetTextStyle(const FTextBlockStyle *InTextStyle)
Definition SInputKeySelector.cpp:91
void SetAllowGamepadKeys(const bool bInAllowGamepadKeys)
Definition SInputKeySelector.h:116
SLATE_API void SetSelectedKey(TAttribute< FInputChord > InSelectedKey)
Definition SInputKeySelector.cpp:64
virtual SLATE_API FReply OnKeyDown(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent) override
Definition SInputKeySelector.cpp:152
virtual SLATE_API FReply OnMouseButtonDown(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent) override
Definition SInputKeySelector.cpp:216
SLATE_API void Construct(const FArguments &InArgs)
Definition SInputKeySelector.cpp:8
virtual SLATE_API FReply OnKeyUp(const FGeometry &MyGeometry, const FKeyEvent &InKeyEvent) override
Definition SInputKeySelector.cpp:169
virtual SLATE_API void OnFocusLost(const FFocusEvent &InFocusEvent) override
Definition SInputKeySelector.cpp:236
SLATE_API void SetMargin(TAttribute< FMargin > InMargin)
Definition SInputKeySelector.cpp:78
void SetEscapeKeys(TArray< FKey > InEscapeKeys)
Definition SInputKeySelector.h:119
virtual SLATE_API FReply OnPreviewMouseButtonDown(const FGeometry &MyGeometry, const FPointerEvent &MouseEvent) override
Definition SInputKeySelector.cpp:204
virtual SLATE_API FNavigationReply OnNavigation(const FGeometry &MyGeometry, const FNavigationEvent &InNavigationEvent) override
Definition SInputKeySelector.cpp:226
void SetAllowModifierKeys(const bool bInAllowModifierKeys)
Definition SInputKeySelector.h:113
void SetNoKeySpecifiedText(FText InNoKeySpecifiedText)
Definition SInputKeySelector.h:110
SLATE_API void SetTextBlockVisibility(EVisibility InVisibility)
Definition SInputKeySelector.cpp:244
void SetKeySelectionText(FText InKeySelectionText)
Definition SInputKeySelector.h:107
SLATE_API void SetButtonStyle(const FButtonStyle *ButtonStyle)
Definition SInputKeySelector.cpp:83
Definition STextBlock.h:45
Definition Array.h:670
Definition Attribute.h:17
Definition SharedPointer.h:692
@ false
Definition radaudio_common.h:23
Definition InputCoreTypes.h:290
Definition Visibility.h:12
Definition SlateTypes.h:509
Definition Events.h:51
Definition Geometry.h:40
Definition InputChord.h:24
Definition Events.h:431
Definition InputCoreTypes.h:50
Definition Margin.h:17
Definition Events.h:1148
Definition Events.h:695
Definition SlateFontInfo.h:147
Definition SlateTypes.h:326