Partager via


LegacyGipGameControllerProvider Classe

Définition

Expose un ensemble de propriétés et de fonctionnalités permettant d’administrer des accessoires de jeu, tels que des boîtiers de jeu et des casques, qui utilisent le protocole GIP (Gaming Input Protocol).

Important

L’accès à cette classe nécessite la déclaration de la fonctionnalité xboxAccessoryManagement

Attention

Ces API affectent tous les jeux d’un système et peuvent causer des problèmes sur un accessoire en cas d’utilisation incorrecte. Microsoft recommande uniquement d’utiliser ces API pour administrer le matériel que vous avez développé.

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
Héritage
Object Platform::Object IInspectable LegacyGipGameControllerProvider
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows Desktop Extension SDK (introduit dans 10.0.23665.0)
API contract
Windows.Gaming.Input.GamingInputPreviewContract (introduit dans v2.0)

Exemples

Lecture des propriétés d’un contrôleur

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

Boutons de remappage

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

Paramètres 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);
}

Gestion des casques

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

Propriétés

AppCompatVersion

Obtient la version du compat d’application signalée par le pilote GIP (Gaming Input Protocol).

BatteryChargingState

Obtient l’état de charge de la batterie du contrôleur.

BatteryKind

Obtient le type de batterie du contrôleur.

BatteryLevel

Obtient le niveau de charge de la batterie du contrôleur.

IsFirmwareCorrupted

Retourne si le microprogramme du contrôleur est endommagé.

IsSyntheticDevice

Retourne si le contrôleur est un appareil synthétique ou physique.

PreferredTypes

Obtient l’ensemble des types GIP (Gaming Input Protocol) signalés par le contrôleur.

Méthodes

ClearPairing(User, String)

Supprime les paires de copilotes pour controllerId pour l’utilisateur donné.

ExecuteCommand(DeviceCommand)

Exécute une commande sur un casque GIP (Gaming Input Protocol) hérité.

FromGameController(IGameController)

Construit un LegacyGipGameControllerProvider pour le contrôleur donné.

FromGameControllerProvider(IGameControllerProvider)

Construit un LegacyGipGameControllerProvider pour le fournisseur de contrôleur donné.

GetDeviceFirmwareCorruptionState()

Récupère l’état indiquant si le microprogramme de l’appareil est endommagé et, le cas échéant, de quelle manière.

GetExtendedDeviceInfo()

Récupère les informations d’identification de l’appareil.

GetHeadsetOperation(HeadsetOperation)

Récupère un paramètre de casque basé sur operation.

GetStandardControllerButtonRemapping(User, Boolean)

Récupère le mappage de bouton et d’axe d’un boîtier de commande standard pour un utilisateur.

IsCopilot(User, String)

Récupère l’ID du contrôleur pilote si ce contrôleur est un copilote.

IsInterfaceSupported(Guid)

Demande si le guid d’interface GIP (Gaming Input Protocol) donné est pris en charge par le contrôleur.

IsPilot(User, String)

Récupère l’ID du contrôleur copilote si ce contrôleur est un pilote.

PairPilotToCopilot(User, String, String)

Associe les contrôleurs pilote et copilote donnés pour l’utilisateur donné.

SetHeadsetOperation(HeadsetOperation, Byte[])

Définit une opération de casque.

SetHomeLedIntensity(Byte)

Définit la luminosité de la LED dans le bouton d’accueil du contrôleur.

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

Modifie le mappage de bouton et d’axe d’un boîtier de commande standard pour un utilisateur.

S’applique à

Voir aussi