> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Simular entrada de gamepad

> Descreve como simular a entrada de gamepad em um console de desenvolvimento XBOX One para uso em um ambiente de teste automatizado ou em uma ferramenta autônoma.

# Simular entrada de gamepad

Ao testar um título do XBOX One, nem sempre é eficiente ter uma pessoa usando um gamepad físico para interagir com o console de desenvolvimento. Você pode automatizar testes de unidade, testes de estresse, testes de longa duração e testes de usuário simulando programaticamente a entrada de gamepad usando o XBOX Tools Framework (XTF) e o XBOX Test Toolkit em um computador. É possível simular a entrada de gamepad em vários consoles ao mesmo tempo para testar cenários multijogador online.

Para simular a entrada de gamepad, adicione `XtfInput.lib` em **Configuration Properties** > **Linker** > **Input** > **Additional Dependencies** e inclua `XtfInput.h` nos arquivos de origem do seu ambiente de teste ou ferramenta autônoma.

* `XtfInput.lib` está localizado em `<GDK Install Path>\toolKit\lib\amd64`
* `XtfInput.h` está localizado em `<GDK Install Path>\toolKit\include`

<Note>
  Os aplicativos Xtf não podem ter como destino sistemas de 32 bits. Você deve garantir que suas opções de build tenham como destino um sistema de 64 bits. Use as etapas a seguir para configurar seu projeto para ter como destino 64 bits.

  1. Abra o menu **BUILD** na barra de contexto superior e selecione **Configuration Manager**.
  2. Selecione a lista suspensa **Active solution platform:** (que provavelmente está definida como Win32) e selecione **\<New\..>**.
  3. Selecione a lista suspensa **Type or select the new platform:** e selecione **x64**. Copie as configurações da sua configuração preferida (provavelmente Win32).
  4. Selecione **OK** para adicionar a nova configuração.
</Note>

#### Para simular a entrada de gamepad

1. Chame [XtfCreateInputClient](/pt-BR/reference/tools/xtf/xtfinput/methods/xtfcreateinputclient-xtfinput-xbox-windows-m), especificando o endereço do console de destino, para criar uma instância de [IXtfInputClient](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/ixtfinputclient-xtfinput-xbox-windows-t).
2. Chame [IXtfInputClient::ConnectGamepad](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/connectgamepad-ixtfinputclient-xtfinput-xbox-windows-m) para criar um controle virtual.
3. Defina uma estrutura [GAMEPAD\_REPORT](/pt-BR/reference/tools/xtf/xtfinput/structures/GAMEPAD_REPORT-xtfinput-xbox-windows-t) para conter o estado do gamepad desejado. Por exemplo, para simular o pressionamento do botão **A**, você usaria `gamepadReport.Buttons = A;`.
4. Chame [IXtfInputClient::SendGamepadReport](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/sendgamepadreport-ixtfinputclient-xtfinput-xbox-windows-m) com a ID do controle retornada por [ConnectGamepad](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/connectgamepad-ixtfinputclient-xtfinput-xbox-windows-m) e o [GAMEPAD\_REPORT](/pt-BR/reference/tools/xtf/xtfinput/structures/GAMEPAD_REPORT-xtfinput-xbox-windows-t) da etapa anterior.
5. Aguarde pelo menos 16 ms e chame [IXtfInputClient::SendGamepadReport](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/sendgamepadreport-ixtfinputclient-xtfinput-xbox-windows-m) novamente para redefinir o estado do controle, se necessário. Por exemplo, para simular a liberação do botão **A**, você usaria `gamepadReport.Buttons = NONE`.
6. Repita as etapas 3 a 5 para enviar pressionamentos de botão adicionais.
7. Chame [DisconnectGamepad](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/disconnectgamepad-ixtfinputclient-xtfinput-xbox-windows-m) quando terminar para garantir que os recursos alocados para o controle virtual sejam liberados.

O exemplo de código a seguir demonstra como simular programaticamente a entrada do controle.

**C++**

```cpp theme={null}
#include "XtfInput.h"  

...  

IXtfInputClient * inputClient;
UINT64 controllerID;
GAMEPAD_REPORT gamepadReport = {};

// replace with the IP address of your devkit
XtfCreateInputClient(L"1.2.3.4", IID_PPV_ARGS(&inputClient));
inputClient->ConnectGamepad(&controllerID);

// give time for the connection to settle before sending input reports
Sleep(250);

gamepadReport.Buttons = A;
inputClient->SendGamepadReport(controllerID, gamepadReport);

Sleep(16);

gamepadReport.Buttons = NONE;
inputClient->SendGamepadReport(controllerID, gamepadReport);

...

inputClient->DisconnectGamepad(controllerID);  
```

## Confira também

##### Referência

* [XtfInput](/pt-BR/reference/tools/xtf/xtfinput/xtfinput-xbox-microsoft-n)


## Related topics

- [Leituras do GameInput](/pt-BR/build/core-features/common/input/overviews/input-readings.md)
- [Estrutura GAMEPAD_REPORT](/pt-BR/reference/tools/xtf/xtfinput/structures/GAMEPAD_REPORT-xtfinput-xbox-windows-t.md)
- [XBOX Tools Framework](/pt-BR/reference/tools/xtf/atoc-xbox-tools-framework.md)
- [Método IXtfInputClient::SendGamepadReport](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/sendgamepadreport-ixtfinputclient-xtfinput-xbox-windows-m.md)
- [IXtfInputClient::SendGamepadReportEx](/pt-BR/reference/tools/xtf/xtfinput/classes/IXtfInputClient/methods/ixtfinputclient_sendgamepadreportex.md)
