다음을 통해 공유


LegacyGipGameControllerProvider.GetStandardControllerButtonRemapping 메서드

정의

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

public:
 virtual IMapView<RemappingButtonCategory, Platform::Object ^> ^ GetStandardControllerButtonRemapping(User ^ user, bool previous) = GetStandardControllerButtonRemapping;
IMapView<RemappingButtonCategory, IInspectable const&> GetStandardControllerButtonRemapping(User const& user, bool const& previous);
public IReadOnlyDictionary<RemappingButtonCategory,object> GetStandardControllerButtonRemapping(User user, bool previous);
function getStandardControllerButtonRemapping(user, previous)
Public Function GetStandardControllerButtonRemapping (user As User, previous As Boolean) As IReadOnlyDictionary(Of RemappingButtonCategory, Object)

매개 변수

user
User

컨트롤러 매핑을 가져올 사용자입니다.

previous
Boolean

bool

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

반환

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 Down, DPad Up, Y, X, B, A, 보기, 메뉴, 가이드 및 바인딩입니다.

일반적으로 이전 매개 변수는 현재 컨트롤러 매핑을 읽는 이어야 false합니다. 나중에 저장한 매핑을 읽는 데도 사용할 수 있습니다(예: 이전 상태를 복원하기 위해 저장된 매핑을 읽는 경우).

주의

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

적용 대상

추가 정보