LegacyGipGameControllerProvider Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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 |
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. |