바쁘신 분들을 위한 한줄요약
****컨트롤러로 기능제약 없이 마우스(조이스틱마우스)와 음성입력을 이용할수 있다.****


우선 저는 베이터5 Pro 를 붉은사막할때 구매 했습니다.
기본적인 컨트롤러키에 추가로 8개의 키가 있으며, 기본 컨트롤러키 외에, 
애드온을 통해 LT, RT와 조합하면 8개 * 4셋으로 32개의 추가키를 사용할수 있습니다.

Easy Controller만 테스트해봐서 오픈하면 다른에드온도 테스트해보고 가장 쓸만한걸 사용할 예정입니다.


마우스를 사용하기 위한 발악(?)을 해보자......
오른손을 컨트롤러와 마우스를 번갈아 잡아도 되긴 하지만, 컨트롤러 로만 해결하기 위해 몇가지 시도를 해봤습니다.

-자이로 센서를 이용한 마우스 조작 : 적응의 문제인지는 모르겠지만 저한테는 너무 어려운 조작이라 포기 하고,
스팀 셋팅을 이용한 조이스틱 마우스 이용하기로 했습니다.

스팀은 각각의 게임에 컨트롤러의 키세팅(레이아웃)을 지원하며, 외부 게임도 등록을 통해 가능합니다.

앞서서, 
스팀을 이용한 레이아웃(컨트롤러의 레이아웃)은 두가지 선택을 하실수 있습니다.

1. 데스크톱 레이아웃
    스팀 -> 설정 -> 컨트롤러 -> 고급설정 -> 데스크톱 레이아웃 : 변경을 통해 컨트롤러의 키를 변경 가능.
   - 스팀의 의도는 컨트롤러로 데스크 탑을 컨트롤 하라는 의도라 기본적으로 조이스틱 마우스 셋팅일겁니다.
     그렇기 때문에, 스팀에 게임을 등록하지 않고 게임에 접속하면,  이 테스크탑 레이아웃을 사용해서 게임을 조작할수있습니다.
     데스크탑레이아웃을 게임에 맞게 설정하고 게임을 접속하시면 됩니다.
    이 경우 스팀이 게임으로 인식하지 않기 때문에 오버레이 기능은 사용할수 없습니다.
     AutoHotKey를 통한 스크립트는 정상 작동하는것을 확인 했습니다. (저는 몇가지 편의기능을 AutoHotKey로 만들어 놔서....)

2. 스팀에 외부게임추가(battle.net)를 통한 레이아웃
    
    스팀의 의도는 각 게임마다 레이아웃을 다르게 설정하니, 스팀에 등록해서 각게임마다 레이아웃을 설정해라...
    라는것 같습니다만, 이경우 오버레이(스팀을통해 링메뉴같은것도 만들수있습니다.)는 잘 동작 하나
     AutoHotKey는 차단 하는것 같습니다.

AutoHotKey를 안쓰신다면 2번의 설정으로 하시면 각종 추가 편의 기능(링메뉴같은것)을 사용하실수 있습니다.


이제, 이글을 쓰게된 이유인데, 채팅을 하기위해 키보드와 컨트롤러사이를 왔다갔다 하는게 무리일듯하여
음성입력 (Speech to Text)기능을 사용하기로 하고 여러 방법들을 고민했습니다.

심플 한 방법은 컨트롤러의 단축키 하나를 보이스입력 단축키 (예를들면 윈도우음성입력 Win+H)로 설정하는것
이지만, 키하나를 못쓴다는 문제가 있습니다. 

이문제를 해결 하기 위해 저는 ABXY버튼 아래에 있는 두개의 추가버튼을 사용하기로 하고,
각각 C, Z 버튼이라 칭하겠습니다.


C : 점프, Z: 상호작용(템줍기등)
LT+C : 지도,     LT+Z : 가방
RT+C : 자동달리기, RT+ Z : 취소키
LT+RT+C : 엔터키   LT+RT+Z : 보이스 입력

ControllerForever 에드온에서 베이더 5 pro의 추가키 8개를 지원한다는 내용을 봤고,
열리면 바로 테스트 예정입니다.
다만, 보이스쳇을 빨리 하기 위해 엔터키 입력, 보이스쳇키 입력등 키입력은 와우의 매크로로 불가능하여, AutoHotKey의 힘을 빌려 사용하기로 했습니다.

AutoHotKey 소스를 첨부 합니다.

#Requires AutoHotkey v2.0
#SingleInstance Force
LT := 0
RT := 0


F9:: 
{
if( LT > 0 && RT > 0)
Send('{Enter}')
}
F10::  
{
if( LT > 0 && RT > 0)
Send("#h")
}


Loop
{
if State := XInputState(0) 
{
LT := State.bLeftTrigger
RT := State.bRightTrigger
;Tooltip LT " " RT
}
    Sleep 100
}

#DllLoad XInput1_4.dll
XInputState(UserIndex)
{
    xiState := Buffer(16)
    if err := DllCall("XInput1_4XInputGetState", "uint", UserIndex, "ptr", xiState)
    {
        if err = 1167 ; ERROR_DEVICE_NOT_CONNECTED
            return 0
        throw OSError(err, -1)
    }
    return {
        dwPacketNumber: NumGet(xiState,  0, "UInt"),
        wButtons:       NumGet(xiState,  4, "UShort"),
        bLeftTrigger:   NumGet(xiState,  6, "UChar"),
        bRightTrigger:  NumGet(xiState,  7, "UChar"),
        sThumbLX:       NumGet(xiState,  8, "Short"),
        sThumbLY:       NumGet(xiState, 10, "Short"),
        sThumbRX:       NumGet(xiState, 12, "Short"),
        sThumbRY:       NumGet(xiState, 14, "Short"),}
}


이경우 LT+RT를 누른채로 C(엔터) -> Z(음성입력)누른후 -> C (엔터로 입력) 혹은 LT-Z로 취소 하면 편하게 음성입력을 할수있습니다....
스팀에서 제공해주는 입력기도 있는것으로 알고있는데, 저는 귀찮아서 윈도우용을 씁니다.


이제 다시 조이스틱 마우스로 넘어와서, 조이스틱 마우스를 사용하는 방법은 여러가지가 있는데,

1. 스팀의 레이어를 이용하는 방법...
    이방법은 특정키를 누르고 있는동안 레이어를 이동해 설정해둔 조이스틱 마우스를 사용하는 방법입니다.
    뗴면 원래의 동작세트로 이동합니다. 
     제경우, 누르고있는동안 마우스 쓰기엔 불편해서 시도하다 포기 했습니다.

2. 동작세트 전환을 이용하는 방법... 
    스팀에서는 각각의 동작세트 간 전환을 할수 있는데, 
    기본 컨트롤러셋팅과, 마우스 셋팅(조이스틱마우스+LB,RB 마우스클릭, 우클릭)을 전환(토글)해가며 사용하는 방식 입니다.
    특정키를 누르면, 마우스 동작세트로, 다사용하고 
    또 특정키를 누르면, 다시 컨트롤러셋팅으로 토글 하는 식입니다.
    이방식도, 특정키 하나를 사용하여  토글 하여야 하기에 키손실이 발생합니다.

    이문제를 해결하기 위해 고심하다가 LT+메뉴키(ABXY바로옆 작은키)를 사용하기로 했습니다.
    일반 LT를 누르지 않은 메뉴키는 게임에서 사용해야 하므로 LT 트리거와 조합하기로 합니다.
    - 이방법을 구현하기 위해서는 각각의 컨트롤러 와 마우스 동작세트에 레이어를 추가하여
      LT+메뉴에 동작세트변경을 통해 조이스틱 마우스와 컨트롤러간 동작세트를 이동시킵니다.
 ***** 스팀 설정이 좀 복잡해서 저도 오래 걸렸습니다만, 쉽게풀어 쓰기 어렵네요....




제가사용하고 있는 레이아웃에 동작 세트 입니다.
Mouse : 우측스틱을 조이스틱 마우스로 설정되어이 있어 조이스틱을 움직이면 마우스 포인트가 움직입니다.
            LB : 마우스 좌클릭, RB : 마우스 우클릭
             *** 이 3개의 키를 제외 하고 나머지키들은 Joystick키와 전부 동일하기에 마우스 모드에서도 전투가 가능합니다.
           ------ Mouse_LT : 마우스 동작세트에 종속된 레이어 입니다. LT키를 누르고있으면 이 레이어로 이동합니다.
                                   LT키를 누른 상태에서 메뉴키를 누르면 동작세트 전환(Joystick)으로 설정되어있습니다.
Joystick : 일반 게임에서 사용하는 모든키셋팅이 되어있습니다.
           ------ Joystick_LT : 기본 컨트롤러 동작세트에 종속된 레이어 입니다.
                                   Joystick 동작세트에서 LT키를 누르고있으면 이 레이어가 선택됩니다. 
                                    마찮가지로 LT키 메뉴를 누르면 동작세트 전환(Mouse)로 이동합니다.

요약하면 : 컨트롤러 모드를 사용하다가 LT+메뉴를 누르면 마우스모드를 사용할수 있고 
               다시한번 LT+메뉴를 누르면 컨트롤러 모드로 돌아 옵니다.......

* 게임상에서 마우스 모드인지, 컨트롤러 모드인지 확인하는법은
     마우스 모드나 컨트롤러 모드에서 다른 모드로 넘어갈때, 각각 추가명령을 통해 다른키를 할당할수 있습니다.
    해당 키에 스크립트를 통해 특정 아이콘(ForeverAurora/WeakAurora)을 보여지게 안보여지게 할수있습니다만, 
    이건 게임 열리면 구현할 생각이라... 찾아보기만 했습니다.. 
 

스팀의 컨트롤러 셋팅이 많이 복잡아고 이해가 어렵긴 하지만 아주 많은 기능들을 포함하고 있어 좋습니다.
가령, LT+우측스틱 상하좌우 같이 여러개의 키를 만들수도 있고, 원형링을 사용하여 키하나에 여러개의 추가 키를 지정할수있습니다.

제가 쓰면서도 헛갈리는데, 몇일동안 인공지능과 문답하며 스팀 컨트롤러셋팅을 공부했네요....ㅠㅠ

모쪼록 컨트롤러로 즐거운 와우 포에버 생활 되시길 바랍니다.



동작세트 : 컨트롤러의 키를 마음대로 지정할수있는 키세트라고 보시면 됩니다. 각 세트 마다 다르게 지정 가능합니다.
레이어 : 동작세트에 종속된 키세트입니다. (마찮가지로 키셋팅을 다 다르게 할수있습니다.)
 ****** 한번에 하나의 동작세트 혹은 레이어가 선택되고 설정된키가 지정됩니다.