Ah, well the c++ thing isn’t a 2 step process. First you create a new class:
.h
#pragma once
#include "Framework/Application/NavigationConfig.h"
class FCustomSlateNavigationConfig : public FNavigationConfig {
public:
FCustomSlateNavigationConfig();
};
.cpp
#include "CustomSlateNavigationConfig.h"
FCustomSlateNavigationConfig::FCustomSlateNavigationConfig() {
KeyEventRules.Empty();
// Add your own KeyEventRules in the KeyEventRules array
}
Then from another place, like your module’s .cpp file you could override Slate’s navigation with the custom one like this:
FSlateApplication::Get().SetNavigationConfig(TSharedRef<FCustomSlateNavigationConfig>(new FCustomSlateNavigationConfig()));
I have heavily modified my stuff, haven’t checked what the arrow key should behave like on a clean project, that’s one thing you can still try before deep diving into code.