다음을 통해 공유


LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping 메서드

정의

사용자에 대한 표준 게임 패드의 단추 및 축 매핑을 변경합니다.

public:
 virtual void SetStandardControllerButtonRemapping(User ^ user, bool previous, IMapView<RemappingButtonCategory, Platform::Object ^> ^ remapping) = SetStandardControllerButtonRemapping;
void SetStandardControllerButtonRemapping(User const& user, bool const& previous, IMapView<RemappingButtonCategory, IInspectable const&> const& remapping);
public void SetStandardControllerButtonRemapping(User user, bool previous, IReadOnlyDictionary<RemappingButtonCategory,object> remapping);
function setStandardControllerButtonRemapping(user, previous, remapping)
Public Sub SetStandardControllerButtonRemapping (user As User, previous As Boolean, remapping As IReadOnlyDictionary(Of RemappingButtonCategory, Object))

매개 변수

user
User

컨트롤러를 다시 매핑할 사용자입니다.

previous
Boolean

bool

True 매핑을 비활성 이전 저장소에 저장해야 하면 이고, false 매핑을 적용해야 하는 경우 입니다.

remapping

IMapView<RemappingButtonCategory,Object>

IReadOnlyDictionary<RemappingButtonCategory,Object>

IMapView<RemappingButtonCategory,Platform::Object>

IMapView<RemappingButtonCategory,IInspectable>

RemappingButtonCategory 와 다시 매핑을 지정하는 데이터와 일치하는 사전입니다. 데이터 형식은 다음과 같이 범주에 따라 다릅니다.

RemappingButtonCategory 데이터 설명
ButtonsSettings 16개의 니블로 구성된 uint64. 각 니블은 단추의 할당을 나타냅니다. 표준 할당이 0xfedcba9876543210
아날로그설정 다음과 같은 효과가 있는 uint32: 0x1 : 스왑 트리거/0x2 : 스왑 엄지스틱/ 0x4: 왼쪽 엄지스틱 반전/0x8: 오른쪽 엄지스틱을 반전합니다. 표준 할당은 0입니다.
VibrationSettings 다음과 같은 효과가 있는 uint32: 0x01 : 진동을 사용하지 않도록 설정합니다. 표준 할당은 0입니다.

예제

void RemapButtons(IGameController controller, IGameControllerProvider controllerProvider)
{
    LegacyGipGameControllerProvider legacyGipGameControllerProvider =
        LegacyGipGameControllerProvider.FromGameControllerProvider(controllerProvider);

    // Retrieve all current remappings set for standard controllers
    IReadOnlyDictionary<RemappingButtonCategory, object> currentMappings =
        legacyGipGameControllerProvider.GetStandardControllerButtonRemapping(
            controller.User, false);

    // Swap two of the buttons
    Dictionary<RemappingButtonCategory, object> remaps =
        new Dictionary<RemappingButtonCategory, object>();

    // Duplicates are not allowed. Swap two of the buttons
    UInt64 currentButtonMappings =
       (UInt64)currentMappings[RemappingButtonCategory.ButtonSettings];

    // Isolate the buttons we want to remap
    UInt64 lastButton = (currentButtonMappings & 0xf000000000000000);
    UInt64 secondLastButton = currentButtonMappings & 0x0f00000000000000;

    // Swap their positions
    UInt64 newMapping = (lastButton >> 4) | (secondLastButton << 4);

    // Recombine with the original mappings
    UInt64 newButtonMappings = (currentButtonMappings & 0x00ffffffffffffff) | newMapping;

    // Add the new button remappings to the mapping dictionary
    remaps.Add(RemappingButtonCategory.ButtonSettings, newButtonMappings);

    // Update controller mapping
    legacyGipGameControllerProvider.SetStandardControllerButtonRemapping(
        controller.User, false, newButtonMappings);
}

설명

ButtonSettings의 단추 순서는 오른쪽 엄지스틱, 왼쪽 엄지스틱, 오른쪽 어깨, 왼쪽 어깨, DPad 오른쪽, DPad 왼쪽, DPad 아래쪽, DPad 위쪽, Y, X, B, A, 보기, 메뉴, 가이드 및 바인딩입니다.

일반적으로 이전 매개 변수는 이어야 false하며, 이 매개 변수는 다시 매핑을 적용합니다. 나중에 매핑을 저장하는 데 사용할 수도 있습니다(예: 사용자 지정 매핑을 적용하기 전에 기본 매핑을 저장하여 나중에 기본 매핑을 복원할 수 있도록).

주의

컨트롤러 매핑은 시스템 전체이며 지정된 사용자에 대해 지속됩니다. 이 작업은 사용자의 지시에 따라 수행해야 합니다.

적용 대상

추가 정보