Condividi tramite


LegacyGipGameControllerProvider Classe

Definizione

Espone un set di proprietà e funzionalità per l'amministrazione di accessori di gioco, ad esempio game pad e cuffie, che usano il protocollo GIP (Gaming Input Protocol).

Importante

L'accesso a questa classe richiede la dichiarazione della funzionalità xboxAccessoryManagement

Attenzione

Queste API influiscono su tutti i giochi in un sistema e possono causare problemi su un accessorio se usato in modo improprio. Microsoft consiglia di usare queste API solo per amministrare l'hardware sviluppato.

public ref class LegacyGipGameControllerProvider sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Gaming.Input.GamingInputPreviewContract, 131072)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class LegacyGipGameControllerProvider final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Gaming.Input.GamingInputPreviewContract), 131072)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class LegacyGipGameControllerProvider
Public NotInheritable Class LegacyGipGameControllerProvider
Ereditarietà
Object Platform::Object IInspectable LegacyGipGameControllerProvider
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows Desktop Extension SDK (è stato introdotto in 10.0.23665.0)
API contract
Windows.Gaming.Input.GamingInputPreviewContract (è stato introdotto in v2.0)

Esempio

Lettura delle proprietà di un controller

public void EnumerateControllerProperties()
{
    foreach (Gamepad gamepad in Gamepad.Gamepads)
    {
        // Create the provider
        LegacyGipGameControllerProvider legacyGipGameControllerProvider =
            LegacyGipGameControllerProvider.FromGameController(gamepad);
        if (legacyGipGameControllerProvider == null)
        {
            // Not every gamepad is a legacy GIP game controller, continue enumerating
            continue;
        }

        // Check properties
        GameControllerBatteryChargingState chargeState =
            legacyGipGameControllerProvider.BatteryChargingState;
        GameControllerBatteryKind batteryKind =
            legacyGipGameControllerProvider.BatteryKind;
        GameControllerBatteryLevel batteryLevel =
            legacyGipGameControllerProvider.BatteryLevel;
        bool isOldFirmwareCorrupted =
            legacyGipGameControllerProvider.IsFirmwareCorrupted;
        bool isNewFirmwareCorrupted =
            legacyGipGameControllerProvider.GetDeviceFirmwareCorruptionState()
            != GameControllerFirmwareCorruptReason.NotCorrupt;
        bool isSynthetic = legacyGipGameControllerProvider.IsSyntheticDevice;
        byte[] extendedDeviceInfo = legacyGipGameControllerProvider.GetExtendedDeviceInfo();

        // Check for a particular GIP interface
        bool supportsSomeCustomInterface =
            legacyGipGameControllerProvider.IsInterfaceSupported(
                new Guid(
                    0xaaaaaaaa, 0xbbbb, 0xcccc, 0xe, 0xf, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6));

        IReadOnlyList<string> preferredTypes =
            legacyGipGameControllerProvider.PreferredTypes;
        bool isGamepad = preferredTypes.Contains("Windows.Xbox.Input.Gamepad");
        bool isHeadset = preferredTypes.Contains("Windows.Xbox.Input.Headset");

        // Change the LED to half brightness
        legacyGipGameControllerProvider.SetHomeLedIntensity(50);
    }
}

Rimap dei pulsanti

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);
}

Impostazioni di Copilot

public void CopilotSample(GipGameControllerProvider pilotProvider,
                                    GipGameControllerProvider copilotProvider)
{
    // Establish a copilot pairing for the given pilot and copilot providers
    string pilotId = GameControllerProviderInfo.GetProviderId(pilotProvider);
    string copilotId = GameControllerProviderInfo.GetProviderId(copilotProvider);
    User user = User.GetDefault();
    LegacyGipGameControllerProvider.PairPilotToCopilot(user, pilotId,
        copilotId);

    // Read copilot properties
    LegacyGipGameControllerProvider.IsPilot(user, pilotId); // Returns copilotId
    LegacyGipGameControllerProvider.IsPilot(user, copilotId); // Returns null
    LegacyGipGameControllerProvider.IsCopilot(user, pilotId); // Returns null
    LegacyGipGameControllerProvider.IsCopilot(user, copilotId); // Returns pilotId

    // Removes the pairing for both controllers
    LegacyGipGameControllerProvider.ClearPairing(user, pilotId);
    // Also removes the pairing for both controllers (unnecessary since the pairing was already removed)
    LegacyGipGameControllerProvider.ClearPairing(user, copilotId);
}

Gestione delle cuffie

public void SetupHeadset(IGameControllerProvider headsetProvider)
{
    LegacyGipGameControllerProvider legacyGipGameControllerProvider =
        LegacyGipGameControllerProvider.FromGameControllerProvider(headsetProvider);

    // Reset the device
    legacyGipGameControllerProvider.ExecuteCommand(DeviceCommand.Reset);

    // Check the smart mute level
    byte[] smartMuteBuffer =
        legacyGipGameControllerProvider.GetHeadsetOperation(HeadsetOperation.SmartMute);
    HeadsetLevel smartMuteValue = (HeadsetLevel)smartMuteBuffer[0];

    // Set bass boost to 3db
    byte[] bassBuffer = BitConverter.GetBytes((UInt32)3);
    legacyGipGameControllerProvider.SetHeadsetOperation(HeadsetOperation.BassBoostGain,
        bassBuffer);
}

Proprietà

AppCompatVersion

Ottiene la versione di compatibilità dell'app segnalata dal driver GIP (Gaming Input Protocol).

BatteryChargingState

Ottiene lo stato di ricarica della batteria del controller.

BatteryKind

Ottiene il tipo di batteria del controller.

BatteryLevel

Ottiene il livello di carica della batteria del controller.

IsFirmwareCorrupted

Restituisce un valore che indica se il firmware del controller è danneggiato.

IsSyntheticDevice

Restituisce un valore che indica se il controller è un dispositivo sintetico o fisico.

PreferredTypes

Ottiene il set di tipi GIP (Gaming Input Protocol) segnalati dal controller.

Metodi

ClearPairing(User, String)

Rimuove eventuali associazioni di copilot per controllerId per l'utente specificato.

ExecuteCommand(DeviceCommand)

Esegue un comando su un auricolare GIP (Gaming Input Protocol) legacy.

FromGameController(IGameController)

Costruisce un Oggetto LegacyGipGameControllerProvider per il controller specificato.

FromGameControllerProvider(IGameControllerProvider)

Costruisce un Oggetto LegacyGipGameControllerProvider per il provider di controller specificato.

GetDeviceFirmwareCorruptionState()

Recupera lo stato del fatto che il firmware del dispositivo sia danneggiato e, in tal caso, in che modo.

GetExtendedDeviceInfo()

Recupera le informazioni di identificazione per il dispositivo.

GetHeadsetOperation(HeadsetOperation)

Recupera un'impostazione visore VR basata su operation.

GetStandardControllerButtonRemapping(User, Boolean)

Recupera il pulsante e il mapping dell'asse di un game pad standard per un utente.

IsCopilot(User, String)

Recupera l'ID del controller pilota se questo controller è un copilota.

IsInterfaceSupported(Guid)

Esegue una query per verificare se il GUID dell'interfaccia GIP (Gaming Input Protocol) specificato è supportato dal controller.

IsPilot(User, String)

Recupera l'ID del controller copilot se il controller è un progetto pilota.

PairPilotToCopilot(User, String, String)

Associa i controller pilota e copilot specificati per l'utente specificato.

SetHeadsetOperation(HeadsetOperation, Byte[])

Imposta un'operazione visore VR.

SetHomeLedIntensity(Byte)

Imposta la luminosità del LED nel pulsante Home del controller.

SetStandardControllerButtonRemapping(User, Boolean, IMapView<RemappingButtonCategory,Object>)

Modifica il pulsante e il mapping dell'asse di un game pad standard per un utente.

Si applica a

Vedi anche