Tree of Savior Forum

[Guide] Advanced Keyboard button edit

P1. How to use 2 skills with 1 button on keyboard

Before editing
Your files will be edited.
The edited file will be 'hotkey.xml (keyboard mode users).

Make a back-up of your file! Copy & paste your file somewhere safe.

The file is somewhere in one of your drivers (likely C:), for example Drive -> Steam -> SteamApps -> common -> treeofsavior -> release.
(Steam\SteamApps\common\TreeOfSavior\release)

Image of the file:
image


Explanation of the file
When you open the hotkey.xml file you will get a lot of text. The part to edit will be the parts which start with QUICKSLOT. You don’t have to do anything yet, please look at the images below to understand which part will be edited.

Image of the part which will be edited: <<Click here

Close-up:

The important part of the text:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“QUICKSLOTNEXPBAR_EXECUTE(0)” UpScp=“None” Key="A" ~~~~ (more text)

DownScp means ‘use the skill/item/action on this quickslot’ when a button is pressed.
UpScp means ‘use the skill/item/action on this quickslot when a button is released’
Key is the button which you press or release.

This means: ‘when I press -A- on the keyboard, the action QUICKSLOTNEXPBAR_EXECUTE(0) must be used’. The meaning of QUICKSLOTNEXPBAR_EXECUTE(0):

This image shows each QUICKSLOTNEXPBAR_EXECUTE location on the keyboard:
i10986894535
QUICKSLOTNEXPBAR_EXECUTE(0) is on the location of key A.
QUICKSLOTNEXPBAR_EXECUTE(1) is on the location of key S.
… and so on.
Important: QUICKSLOTNEXPBAR_EXECUTE just indicates the Location on the in-game keyboard (as shown in the image above).

Please note: your keyboard image might look a little bit different (if you have already adjusted it in-game before), so have a look in-game at the keyboard shortcut menu if you are unsure.

The difference could be ‘other keys on the locations of the image’.
For example, you could have key ‘Z’ on the location of QUICKSLOTNEXPBAR_EXECUTE(0). This difference will not matter, the location of each QUICKSLOTNEXPBAR_EXECUTE() on the keyboard will not change, even if the key is different.

In this example: in-game, you are able to put a skill on the spot of keyboard ‘A’, this spot is remembered as QUICKSLOTNEXPBAR_EXECUTE(0).



Back to the text:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“QUICKSLOTNEXPBAR_EXECUTE(0)” UpScp=“None” Key="A" ~~~~ (more text)

This means: when you press -A- (DownScp means press the button) —> your character will activate the skill which you put on this keyboard spot:
image
Note: the button pressed does not have to match the button on your keyboard. The default state of the game will have your button matched to the location on the keyboard because it makes sense. After we edit, you could press -A- and use the skill which is on the location of button F (QUICKSLOTNEXPBAR_EXECUTE(3) , for example.



Editing: use a skill when you release the button on the keyboard
To use a skill when the button is released, the part of ‘UpScp’ must be used. Currently it is Blank (UpScp=“None”). To edit it, you should choose which -keyboard location- you want to activate.

In this example, the button -A- is used (Key = “A”).


Example 1, you want to use the same skill again when you release button -A-, you should change
UpScp="None" into UpScp="QUICKSLOTNEXPBAR_EXECUTE(**0**)" in the text:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“QUICKSLOTNEXPBAR_EXECUTE(0)” UpScp=“QUICKSLOTNEXPBAR_EXECUTE(0)”`" Key="A" ~~~~ (more text)

This means:
Key = A, so
—> (DownScp means press) when you press -A- on your keyboard, the skill on the spot of 'QUICKSLOTNEXPBAR_EXECUTE(0) ’ must be used
—> (UpScp means release) when you release button -A- on your keyboard, the skill on the same spot must be used again.

Note: this kind of set-up is best used with 0 CD or Overheat skills to spam them. Examples: monk double punch, scout3 split arrow.



Example 2, when you release the button -A-, you want to use the skill which is on this location of the keyboard:
image
This location is "QUICKSLOTNEXPBAR_EXECUTE(29). To use it when you release button -A-, you must change UpScp="None" into UpScp="QUICKSLOTNEXPBAR_EXECUTE(**29**)" in the text:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“QUICKSLOTNEXPBAR_EXECUTE(0)” UpScp=“QUICKSLOTNEXPBAR_EXECUTE(29)”`" Key="A" ~~~~ (more text)

This means:
–> When you press -A-, you will activate the skill on keyboard button A.
–> When you release -A-, you will activate the skill on location ‘29’ of the keyboard (look at the image above).
Please note: you must go in-game and put a skill on that spot of the keyboard shortcut bar (spot 29 of the image)!

Usage example: if the skill on -A- will go on Cooldown, press and release ‘A’ again to use the skill on spot 29 :
Press A once -> use skill on location 0.
Skill on location 0 is on CD.
Press A & release A --> use skill on location 29.
Result: you don’t have to move your fingers to press the command for button 29 (the ‘shift+0’ command).



These 2 examples used Key=A (pressing button A). If you would like to edit another button, you must look at your hotkey.xml file, and find the Key ="…" line in your file.

Image of where to look in the file (find your key ---right side of the image): <<Click here

Note: you must look at the text which starts with 'Hotkey ID="QuickSlotExecute… (left side of the image). If you edit text which does not start with Hotkey ID= QuickSlotExecu…, you will edit other commands (for example movement, emoticons, …).

Also important: Some keys seem duplicate, however they have additional text. These keys are the keys of QUICKSLOTNEXPBAR_EXECUTE(number 30 to 39), they have a ‘UseShift=“Yes” ‘. This means you must hold your shift key before you press the other Key(the Key=’…’). If you don’t want to hold shift, select the lines of text with 'UseShift=“NO” '.



A. If you want to add a ‘skill’ when you release the key, look at the UpScp=“None” part of that line of text, delete the 'None’ and add a QUICKSLOTNEXPBAR_EXECUTE(number).
Important: there is NO indication in-game about which keyboard location is used when you release the button, so you must remember the keyboard-location you chose (or look at the hotkey.xml file if you forget). Another way to test it is to fill your in-game keyboard shortcuts completely and repeatedly press a button --> look which 2 skills are used when you press the same button —> discover which other button you linked to your original button.

B. If you want to change which ‘skill’ is used when you press the key (not recommended, because it doesn’t make a lot of sense…), look at the DownScp="…" part and change the number inside the QUICKSLOTNEXPBAR_EXECUTE(...).

Note: anything you write must have these marks in front and after: " "
Example: DownScp="QUICKSLOTNEXPBAR_EXECUTE(0)"



Remember to go in-game to put a skill/item/command on the spot of the keyboard (a skill/item/command on the correct spot of QUICKSLOTNEXPBAR_EXECUTE(number you chose) or nothing will happen.

Image of the QUICKSLOTNEXPBAR_EXECUTE(...) locations again: <<Click here

i10986894535

Remember to SAVE your file once you finish editing.




P2. How to redirect Controller to use skills on your Keyboard-shortcut

Before editing
Your files will be edited.
The edited files will be 'hotkey.xml AND ‘hotkey_joystick.xml’.

Make a back-up of your file! Copy & paste your file somewhere safe.

The file is somewhere in one of your drivers (likely C:), for example Drive -> Steam -> SteamApps -> common -> treeofsavior -> release.
(Steam\SteamApps\common\TreeOfSavior\release)

Image of the file location. Note: make a back-up of hotkey.xml AND hotkey_joystick.xml!
image


Why?
Sometimes you have too few buttons on the controller to put skills. Or you would like to use multiple skills with the same button.

The file you need
The file which will be edited is the ‘hotkey_joystick.xml’ file.

Image of the file:
image




Explanation
When you open the ‘hotkey_joystick.xml’ file, you will see a lot of text. This is the part of the file which will be edited:

Please look at this image:<<Click here

The important part of the text:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“JOYSTICK_QUICKSLOT_EXECUTE(0)” UpScp=“None” Key=“JOY_BTN_1” PressedKey="JOY_BTN_5" ~~~~(more text)

Meaning:
DownScp = [use something/something happens] when I press this button on the controller
UpScp = [use something/something happens] when I release this button on the controller
Key = the button you press on the controller
PressedKey = (I must hold this key on the controller before I press the Key)

Note: the name of the button is difficult, it doesn’t say ‘X, A, Z, O’ like keyboard. Instead it is “JOY_BTN_1”.

I will tell you the button on an Xbox controller (and some other controllers?):
JOY_BTN_1 is the X Button.
JOY_BTN_5 is the LB Button (left bumper button).

If you don't understand, please look at this image of an Xbox controller: <<Click here

Note: I have not added an overview of the keys which match with each JOY_BTN_ here. It will be shown during the editing part later on.



Look at the command again:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“JOYSTICK_QUICKSLOT_EXECUTE(0)” UpScp=“None” Key=“JOY_BTN_1” PressedKey="JOY_BTN_5" ~~~~(more text)

This means: 'If I hold the JOY_BTN_5 , and press the JOY_BTN_1 (DownScp means Press), something will happen.
-JOY_BTN_1 is the X Button.
-JOY_BTN_5 is the LB Button
—>‘If I hold the LB button and press the X button, my character will do (something)’.


…my character will do (something)’ —> your character will use the skill on the location of JOYSTICK_QUICKSLOT_EXECUTE(0) .

Here is an image of the locations of the JOYSTICK_QUICKSLOT_EXECUTE(…):
Controller hotkey layout
In this example, pressing LB+X will make your character use the krivis skill ‘Zalciai’ (look at the image above), because the user put this skill on the location of the ‘JOYSTICK_QUICKSLOT_EXECUTE(0)’.



Editing: use a skill when you release the button on the controller
Look at the text:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“JOYSTICK_QUICKSLOT_EXECUTE(0)” UpScp=“None” Key=“JOY_BTN_1” PressedKey="JOY_BTN_5" ~~~~(more text)

Before you edit, you must decide which key combination on your keyboard controller you would like to combine with an extra skill. In this example, Key="JOY_BTN_1" PressedKey="JOY_BTN_5 is edited, which means the command ‘LB+X’. on your controller.

To find other commands,

you must know the code of each key on your controller:<<Click here

X Button = JOY_BTN_1
A Button = JOY_BTN_2
B Button = JOY_BTN_3
Y Button = JOY_BTN_4
LB = JOY_BTN_5
RB = JOY_BTN_6
LT = JOY_BTN_7
RT = JOY_BTN_8
Back Button = JOY_BTN_9
Start Button = JOY_BTN_10
Left Stick Button = JOY_BTN_11
Right Stick Button = JOY_BTN_12

Left Thumb Stick:
Up = JOY_UP
Down = JOY_DOWN
Left = JOY_LEFT
Right = JOY_RIGHT

Right Thumb Stick:
JOY_TARGET_CHANGE

Pressing R1 and R2 at the same time = JOY_R1R2
Pressing L1 and L2 at the same time = JOY_L1L2

The important codes are highlighted.

Once you have decided on the code, find it in the ‘hotkey_joystick.xml’ file. Please make sure the line of text starts with
<HotKey ID="QuickSlotExecute....

If you don't understand, please look at the image here: <<Click here

Please find the line of text with the correct (" Key="JOY_BTN_..." & PressedKey="JOY_BTN_...**") of the controller command you would like to edit.


Once you have found your line of text, example:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“JOYSTICK_QUICKSLOT_EXECUTE(0)” UpScp=“None” Key=“JOY_BTN_1” PressedKey="JOY_BTN_5"

This is the command for ‘LB+X’ (or L1+X).

To use a skill when you release the controller button, you must edit the UpScp=“None” part. You must decide what you would like to do: choose a button on your controller or choose somewhere else.



Example A. Redirect to a button on the controller. If you would like to do this, simply have a look at the code of your controller and select one. For example, write UpScp="JOYSTICK_QUICKSLOT_EXECUTE(1)" to use the skill on this slot:
image
In this example:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“JOYSTICK_QUICKSLOT_EXECUTE(0)” UpScp=“JOYSTICK_QUICKSLOT_EXECUTE(1)” Key=“JOY_BTN_1” PressedKey="JOY_BTN_5" ~~~~(more text)

—> pressing LB+X will cast the Krivis skill Zalciai.
-Zalciai will be on cooldown.
—> releasing LB+X will cast the krivis skill Divine Stigma. (or press and release it again)



Example B. Redirect to a button on the keyboard (you don’t have to be using a keyboard to do this!). To redirect to a button on your keyboard (the keyboard short-cut in-game), choose a number for the command
DownScp=“QUICKSLOTNEXPBAR_EXECUTE(....)”:

Image of the location of the numbers on the in-game keyboard shortcut (select keyboard-mode in game options):
i10986894535
QUICKSLOTNEXPBAR_EXECUTE(0) is on the location of key A.
QUICKSLOTNEXPBAR_EXECUTE(1) is on the location of key S.
… and so on.

Go in-game to view your keyboard skill shortcuts. Put a skill/item/command on the keyboard to use it.
Example: if you would like to use a skill on Location number 29, put a skill and switch back to Controller mode (select it in the game options). Edit your DownScp="None" into DownScp=“QUICKSLOTNEXPBAR_EXECUTE(29).
It will be:

<HotKey ID=“QuickSlotExecute1” Name=“퀵슬롯1” DownScp=“JOYSTICK_QUICKSLOT_EXECUTE(0)” UpScp=“QUICKSLOTNEXPBAR_EXECUTE(29)” Key=“JOY_BTN_1” PressedKey="JOY_BTN_5" ~~~~(more text)

This means:
–> Press LB+X to activate a skill on the controller.
-The controller skill will be on CD.
–> Release LB+X (or press and release LB+X again) to activate whichever skill you put on ‘location number 29’ on the in-game keyboard.

Remember to save your file when you are done editing!

6 Likes

Reserved123456

:tired:

Hey,

great guide.

But I have a question open.

Is it possible to do for each character a seperate hotkey layout ?

1 Like

I think it is possible but I do not know how.

I have something named hotkey_Char3.xml (which should be specific layout for 3rd character).
You could try to copy&paste a hotkey file, edit it, and name it hotkey_Char1.xml or hotkey_Char2.xml or …

I think you should look at your lodge and look at the Number next to your character or your character’s spot (spot1 = first character, for example).

image

A practical application of this mechanic. Auto-swap to another equipment during a skill!

Video: bulletmarket auto-swaps to Vubbe Fighter Gloves for +2 AoE attack ratio during the skill R.I.P. (which uses AoE attack ratio).

And auto-swap back of course.


This is useful if you really want to maximize each ability of your character. For example, auto-swap to DEX gloves during normal attack, AoE gloves/equip during AoE-skills, and SPR/CON during idle for regen. It will be some work to set-up the commands.