Remappable Keybinds =================== Summary ^^^^^^^ ArkFrame introduces a system that allows for user remappable keybindings. These keybindings actually exist as individual objects attached to the player controller. This means that each keybinding has its own graphs and variables, allowing for easily extendable custom logic. Keybinding objects replicate by default allowing you to implement them as a mediator with UIs and the server or with player actions. they also by default hook into the keybind remapping interface for players. Filling in the preferred keybinding and an action string is all that is required for the keybinding to automatically be included in the menu. Setting up a new keybind ^^^^^^^^^^^^^^^^^^^^^^^^ To create a new keybind class open your ModData BP and add a new element to the KeybindDefinitions and create a new blueprint. .. image:: /images/Dev/keybind_newclass1.png In the defaults of your new keybind blueprint locate the ArkFrame section. This contains the only fields that need to be filled in for the ArkFrame system. .. image:: /images/Dev/keybind_newclass2.png Keybind Action String --------------------- This string acts as the displayable string for the keybind in the keybind interface and it acts as half of a 2-piece identifier for seperating your keybind object from any others when applying user keymapping profiles Preferred Keybind ----------------- This struct defines the default keybinding for the object, this can be overriden by users. PrimaryKey ********** This is the core key for the mapping without any modifiers. The variables accepts any key defined in UE4 however not all keys are defined as valid keys to the users. it is best to refer to the keymap dictionary for a liting of the valid keys.:: Keymap Dictionary: /Game/Mods/ArkFrame/Core/Data/ConstArkFrame_Keymapping Modifier bools ************** These bools act as modifiers to the *PrimaryKey*: +-----------------------+-------------------------------------------------------------------------------------------------------------------------+ | Bool | Effect | +=======================+=========================================================================================================================+ | bIsReleased | Defines wether or not *Event Key Pressed* should fire when the *PrimaryKey* is initially pressed or when it is released | +-----------------------+-------------------------------------------------------------------------------------------------------------------------+ | bCtrlIsDown | CTRL will be used as a cumulative modifier to the *PrimaryKey* | +-----------------------+-------------------------------------------------------------------------------------------------------------------------+ | bAltIsDown | ALT will be used as a cumulative modifier to the *PrimaryKey* | +-----------------------+-------------------------------------------------------------------------------------------------------------------------+ | bShiftIsDown | SHIFT will be used as a cumulative modifier to the *PrimaryKey* | +-----------------------+-------------------------------------------------------------------------------------------------------------------------+ | bCmdIsDown | CMD will be used as a cumulative modifier to the *PrimaryKey* | +-----------------------+-------------------------------------------------------------------------------------------------------------------------+ Graph Events ^^^^^^^^^^^^ The keybind class only adds two events that mod authors need to be worried about. *Event Keybind Pressed* & *Event Recieved Player Command* Additionally, The keybind class does replicate by default so *Run on Server* and *Run on Client* events can be used as well. Event Keybind Pressed --------------------- .. image:: /images/Dev/keybind_EventKeybindPressed.png This event fires anytime the user pressed the valid assigned keybind. Event Recieved Player Command ----------------------------- .. image:: /images/Dev/keybind_EventRecievedPlayerCommand.png This event fires anytime the player uses a PlayerCommand in the console.:: Syntax: AdminCheat PlayerCommand The Command string is passed through the event for evaluation.