이미 몇개 글들이 올라왔지만 제가 연구한 내용을 추가해보려고 합니다.
트오세 단축키 설정 xml파일의 위치는 TOS 설치폴더/release/ 안에 있습니다.
 hotkey.xml, hotkey_mousemode.xml hotkey_joystick.xml 3개 파일이며 각자 키보드 모드,마우스 모드,패드 모드의 단축키 설정을 담고 있습니다. 여기선 hotkey_joystick.xml 파일의 분석을 중점적으로 다룹니다.게임내에서 어느정도 단축키 편집이 가능한 다른 두모드와 달리 패드는 아예 안되기 때문입니다.

xml 형식은 단순합니다.
<Category>
   <HotKey .../>
   <HotKey .../>
</Category

HotKey 한행당 키바인드 하나를 정의하고있습니다. 

HotKey 행 하나를 살펴보면
<HotKey ID="ToggleMouseMode" Name="마우스모드토글" DownScp="joystick.ToggleMouseMode()" UpScp="None" Key="JOY_BTN_10" PressedKey="JOY_BTN_6" Mode="Both" UseAlt="NO" UseCtrl="NO" OnEdit="NO"/>

여러가지 요소가 있는데요 일단
1) Name, UseAlt, UseCtrl, OnEdit 
Name은 설명문으로 실제 작용은 없는 것 같습니다. UseAlt,UseCtrl 은 키보드 모드에서 인계된 요소로 보이며 패드에서는 다 NO면 됩니다. OnEdit은 게임내에서 수정 가능한지 여부를 묻는 것일텐데 건드릴 이유는 없겠죠.

2) ID, DownScp, UpScp
이 부분은 누른 키가 어떤 기능을 수행하는지에 대한 요소입니다. DownScp는 키를 눌렀을 때, UpScp는 키를 뗄때 실행됩니다. 문제는 둘다 None으로 되어 있는 행이 있는데 이 경우 ID에 따라 기능을 부여하는 것 같은데 이 부분은 자료도 부족하고 실험도 부족해서 아직 정확하진 않습니다.

3) Key, PressedKey
이 두개가 눌려지는 키를 지정합니다. PressedKey는 선행해서 눌러야하는 키죠 L1+세모면 L1이 해당됩니다. 
 a)여기서 주의해야할 건 PressedKey 단독으로 눌려지는 건 지정하면 안된다는 겁니다. L1에 무언가를 지정한다면 L1 + 세모가 눌리기 전에 L1이 실행되기 때문이죠. 
 b)그리고 복합키 구문은 단일키 구문보다 위에 나와야합니다. 세모 버튼 지정행이 L1+세모 버튼 지정행보다 위에 있으면 L1+세모가 먹히지 않습니다. 아마 위에서부터 차례대로 읽으면서 일치하는 걸 찾기 때문이겠죠.
 c)또 하나는 R2 + L2 처럼 어느 쪽이 눌리든 상관 없는 행을 만들고 싶으면 두개 다 지정해야합니다. L2+R2로 하나 R2+L2로 하나 이렇게 말이죠. 다만 예외는 L1L2, R1R2는 따로 키하나를 부여했더군요 L1L2+ 지정키 조합을 만들고 싶어서 아예 그렇게 만든 것 같습니다. 키 변수는 밑에 또 추가로 적겠습니다.

4) Mode
Mode는 Key,Mouse,Both 가 있습니다. 패드모드, 마우스모드, 양쪽다에 해당되겠죠. 지정된 행이 어느 모드에서 동작할 거를 지정합니다. 보통은 Key를 지정하면 됩니다. 


A) DualShock 4의 키 변수 
-아날로그 스틱
상: JOY_UP
하: JOY_DOWN
좌: JOY_LEFT
우: JOY_RIGHT
-십자패드
십자상: JOY_CROSS_UP
십자하: JOY_CROSS_DOWN
십자좌: JOY_CROSS_LEFT
십자우: JOY_CROSS_RIGHT

네모: JOY_BTN_1
세모: JOY_BTN_4
동글: JOY_BTN_3
엑스: JOY_BTN_2

L1: JOY_BTN_5
L2: JOY_BTN_7
L3: JOY_BTN_11
R1: JOY_BTN_6
R2: JOY_BTN_8
R3: JOY_BTN_12
L1+L2: JOY_L1L2
R1+R2: JOY_R1R2

Share: JOY_BTN_9
Option: JOY_BTN_10

터치패드: JOY_BTN_14
PS버튼: JOY_BTN_13

B) 함수 목록
패드퀵슬롯: JOYSTICK_QUICKSLOT_EXECUTE(x) x:숫자
마우스 모드: joystick.ToggleMouseMode()
맵열기: UI_TOGGLE_MAP()
퀘스트아이템: QUESTITEMUSE_EXECUTE()
마우스가속: joystick.MouseSpeedUp(x) x:가속수치 음수면 감속
퀵슬롯전환: JOYSTICK_QUICKSLOT_SWAP(1)
무기변경: WEAPONSWAP_SWAP_EQUIP()
워프: SELECT_QUEST_WARP()
컴패탑승: ON_RIDING_VEHICLE(x) 1=타기,0=내리기
컴패연관: COMPANION_INTERACTION(x) 1=쓰다듬기,2=먹이주기
휴식모드: control.RestSit()

--------키보드 배열에서---------
채팅: ui.ProcessReturnKey()
캐릭터: UI_TOGGLE_STATUS()
캐릭터정보: CHARBASEINFO_EXCHANGE()
인벤토리: UI_TOGGLE_INVENTORY()
스킬트리: UI_TOGGLE_SKILLTREE()
모험일지: UI_TOGGLE_JOURNAL()
퀘스트: UI_TOGGLE_QUEST()
파티리스트: UI_TOGGLE_PARTY()
친구리스트: UI_TOGGLE_FRIEND()
매크로: UI_TOGGLE_POSE_MACRO()
컴패니언: UI_TOGGLE_PETLIST()
도움말: UI_TOGGLE_HELPLIST()
월드맵: UI_TOGGLE_WORLDMAP()
미니맵크기: SET_MINIMAP_SIZE(x) 1=크게,0=작게
퀵슬롯: QUICKSLOTNEXPBAR_EXECUTE(x) 0~39
채팅매크로x: EXEC_CHATMACRO(x) 1~10
확인: UI_KEYDOWN_OKAY()
취소: UI_KEYDOWN_CANCEL()
채팅변경: ui.ProcessTabKey()

C) 함수가 없는 ID 목록

위쪽 방향 이동: MoveUp
아래쪽 방향 이동: MoveDown
왼쪽 방향 이동: MoveLeft
오른쪽 방향 이동: MoveRight

일반공격: NormalAttack
점프: Jump
선택/스킵: Select
ESC버튼: Escape
타겟 고정: TargetFixed
타겟 변경: TargetChange
보조 무기: LHand

// 마우스모드 사용
십자키 위: CrossUp
십자키 아래: CrossDown
십자키 왼쪽: CrossLeft
십자키 오른쪽: CrossRight

활용 예
a) 방패나 보조 무기를 쓰지 않아서 세모 버튼을 퀵슬롯으로 지정하고 싶은 경우

<HotKey ID="LHand" Name="보조 무기" DownScp="None" UpScp="None" Key="JOY_BTN_4" PressedKey="None" Mode="Key" UseAlt="NO" UseCtrl="NO" OnEdit="NO"/>
이 행을 찾아서 DownScp에 퀵슬롯 실행 함수를 넣습니다. 저는 QUICKSLOTNEXPBAR_EXECUTE(20) 키보드 모드에서 숫자 1번에 해당되는 걸 넣었습니다.

<HotKey ID="LHand" Name="보조 무기" DownScp="None" UpScp="QUICKSLOTNEXPBAR_EXECUTE(20)" Key="JOY_BTN_4" PressedKey="None" Mode="Key" UseAlt="NO" UseCtrl="NO" OnEdit="NO"/>
이렇게 바꾼 뒤 세모로 쓰고 싶은 스킬을 키보드 모드에서 숫자 1칸에 넣으면 해당 스킬이 사용됩니다.

b) 무기를 바꿈과 동시에 스킬창을 전환하고 싶은 경우
<HotKey ID="WeaponSwap1" Name="무기 스왑" DownScp="WEAPONSWAP_SWAP_EQUIP()" UpScp="None" Key="JOY_BTN_11" PressedKey="None" Mode="Key" UseAlt="NO" UseCtrl="NO" OnEdit="NO"/>
이 행을 찾아서 UpScp에 JOYSTICK_QUICKSLOT_SWAP(1)를 넣습니다.

<HotKey ID="WeaponSwap1" Name="무기 스왑" DownScp="WEAPONSWAP_SWAP_EQUIP()" UpScp="JOYSTICK_QUICKSLOT_SWAP(1)" Key="JOY_BTN_11" PressedKey="None" Mode="Key" UseAlt="NO" UseCtrl="NO" OnEdit="NO"/> 그러면 L3을 누를 때 무기가 바뀌고 뗄때 스킬창이 바뀌게 됩니다. //아직 이부분은 실험한 적이 없네요

c) 패드에는 있는데 사용되지 않는 버튼 찾아서 쓰기
 DS4의 경우 터치패드 버튼과 PS버튼이 전혀 활용되지 않지만 변수는 확실히 있었습니다. 이 숫자를 알아보는 방법은 해당 패드를 컴퓨터에 연결한 후 설정에서 테스트 해보는 겁니다. 

이 화면에서 해당 버튼을 눌러서 무슨 숫자로 나오는지 알아보고 그걸 JOY_BTN_ 뒤에 붙이면 됩니다.