ddotge
(ddotge)
1
Hello
I’m making interactive widget.
I can get keyboard inputs with NativeOnKeyDown but I can’t get mouse input.
FReply UBuildingHelper::NativeOnKeyDown(const FGeometry& InGeometry, const FKeyEvent& InKeyEvent)
{
Super::NativeOnKeyDown(InGeometry, InKeyEvent);
if(InKeyEvent.GetKey() == EKeys::LeftMouseButton)
{
UE_LOG(LogTemp, Warning, TEXT("LeftMouseButton"));
}
else if(InKeyEvent.GetKey() == EKeys::A)
{
UE_LOG(LogTemp, Warning, TEXT("Keyboard A Pressed"));
}
else if(InKeyEvent.GetKey() == EKeys::E)
{
UE_LOG(LogTemp, Warning, TEXT("EKey!!!!"));
}
return FReply::Handled();
}
![image](https://d3kjluh73b9h9o.cloudfront.net/original/4X/3/d/6/3d66cabbca11553af068c868854cdd188aeea26b.png)
As I wrote, I can see the logs about keyboard like a and e.
but I can’t get left mouse input and right mouse input.
what did i wrong?
thanks in advance ![:slight_smile: :slight_smile:](https://d1ap1mz92jnks1.cloudfront.net/images/emoji/twitter/slight_smile.png?v=12)
3dRaven
(3dRaven)
2
You need to hand it via the native mouse commands (not keyboard)
header needs include “Input/Reply.h” and override the following functions from uuserwidget
virtual FReply NativeOnKeyDown(const FGeometry& InGeometry, const FKeyEvent& InKeyEvent) override;
virtual FReply NativeOnMouseButtonDown(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
virtual FReply NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
virtual FReply NativeOnMouseMove(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
};
cpp
#include "BuildingHelper.h"
FReply UBuildingHelper::NativeOnKeyDown(const FGeometry& InGeometry, const FKeyEvent& InKeyEvent)
{
Super::NativeOnKeyDown(InGeometry, InKeyEvent);
if (InKeyEvent.GetKey() == EKeys::A)
{
UE_LOG(LogTemp, Warning, TEXT("Keyboard A Pressed"));
}
else if (InKeyEvent.GetKey() == EKeys::E)
{
UE_LOG(LogTemp, Warning, TEXT("EKey!!!!"));
}
return FReply::Handled();
}
FReply UBuildingHelper::NativeOnMouseButtonDown(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
{
Super::NativeOnMouseButtonDown(InGeometry, InMouseEvent);
if (InMouseEvent.GetEffectingButton() == EKeys::LeftMouseButton)
{
UE_LOG(LogTemp, Warning, TEXT("LeftMouseButton down"));
}
return FReply::Handled();
}
FReply UBuildingHelper::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
{
Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent);
if (InMouseEvent.GetEffectingButton() == EKeys::LeftMouseButton)
{
UE_LOG(LogTemp, Warning, TEXT("LeftMouseButton up"));
}
return FReply::Handled();
}
FReply UBuildingHelper::NativeOnMouseMove(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
{
Super::NativeOnMouseMove(InGeometry, InMouseEvent);
UE_LOG(LogTemp, Warning, TEXT("MouseButton move"));
return FReply::Handled();
}
Always look at the engine files for tips
Which functions are virtual and can be overriden.
1 Like
ddotge
(ddotge)
3
Oh!! Thank you so much ![:slight_smile: :slight_smile:](https://d1ap1mz92jnks1.cloudfront.net/images/emoji/twitter/slight_smile.png?v=12)
I hope you have a wonderful day!!