Due to modern keyboards no longer having keys such as F13-F29 naturally Unreal Engine does not support these input methods as they are an uncommon key to have these days, I have them though…
Currently it only supports Mac OS and Windows but unforutnately not Linux at the moment.


How?#
This was made as a plugin as I wanted it independent from Unreal Engine 4 Plus so you did not need to compile the full engine and be limited to 4.26.2 rather it can work on most engine versions.
To get these keys into the input mapping systems I have to slightly hijack KeyMapVirtualToEnum that is a private member inside FInputKeyManager. As I wanted to add to this map I had to employ my reverse engineering techniques that I have picked up to modify this data without proper methods.
Hacky needed method
// Input Key Manager Singleton
FInputKeyManager& InputManager = FInputKeyManager::Get();
// Access private engine property
TMap<uint32, FKey>* KeyMapVirtualToEnum = reinterpret_cast<TMap<uint32, FKey>*>(
reinterpret_cast<__int64>(&InputManager) + sizeof(InputManager) - (sizeof(TMap<uint32, FKey>) * 2));
#define AddKey(KeyToAdd) KeyMapVirtualToEnum->Add(EExtendedKeys::GetCodeFromKey(KeyToAdd), KeyToAdd)
if (KeyMapVirtualToEnum)
{
AddKey(EExtendedKeys::F13);
AddKey(EExtendedKeys::F14);
AddKey(EExtendedKeys::F15);
AddKey(EExtendedKeys::F16);
AddKey(EExtendedKeys::F17);
AddKey(EExtendedKeys::F18);
AddKey(EExtendedKeys::F19);
AddKey(EExtendedKeys::F20);
AddKey(EExtendedKeys::F21);
AddKey(EExtendedKeys::F22);
AddKey(EExtendedKeys::F23);
AddKey(EExtendedKeys::F24);
}
This is a very very hacky technique that should not normally be employed. It naturally should be as such if KeyMapVirtualToEnum was public.
Intended method
// Input Key Manager Singleton
FInputKeyManager& InputManager = FInputKeyManager::Get();
#define AddKey(KeyToAdd) InputManager.KeyMapVirtualToEnum.Add(EExtendedKeys::GetCodeFromKey(KeyToAdd), KeyToAdd)
if (KeyMapVirtualToEnum)
{
AddKey(EExtendedKeys::F13);
AddKey(EExtendedKeys::F14);
AddKey(EExtendedKeys::F15);
AddKey(EExtendedKeys::F16);
AddKey(EExtendedKeys::F17);
AddKey(EExtendedKeys::F18);
AddKey(EExtendedKeys::F19);
AddKey(EExtendedKeys::F20);
AddKey(EExtendedKeys::F21);
AddKey(EExtendedKeys::F22);
AddKey(EExtendedKeys::F23);
AddKey(EExtendedKeys::F24);
}
Why?#
Since my keyboard has these keys I want to bind editor functionality and allow possible users who play my game to choose these extended function keys as a form of input binding as it is quite irritating that you cannot normally bind to these keys in Unreal Engine.

