> ## 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.

# Building Touch Control Layouts

> Building Touch Control Layouts

Building your touch control layouts consists of creating a [touch adaptation bundle](/build/core-features/common/game-streaming/game-streaming-touch-touch-adaptation-bundle) that includes:

* A `takxconfig.json` file that is a JSON representation of all of the bundle's metadata and properties
* A collection of layouts where each layout file is a JSON representation of the controls available to players for a specific scenario in game
* A Context file which is a JSON representation of the global state and properties used by layouts
* Any custom assets that are referenced by those layouts

## Getting Started

The easiest way to create a [touch adaptation bundle](/build/core-features/common/game-streaming/game-streaming-touch-touch-adaptation-bundle) is to use the [create command](/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-create-command). This command can be used to easily create all the files and folders needed to get up and running with the touch adaptation kit. In addition to being able to create a full bundle, the create command can be used to create a single layout file based on a template layout for different genres and situations in a game.

## Touch Bundle JSON Schemas

The various JSON files, like a layout or context file, use a JSON schema file to provide structure and rules about how to write a valid file. These schema files are hosted on the [XBOX Game Streaming Tools Github](https://github.com/microsoft/xbox-game-streaming-tools/tree/main/touch-adaptation-kit/schemas) in a variety of languages. These language specific schemas can be used in tools like [Visual Studio Code](https://code.visualstudio.com/download) to get Intellisense about schema properties and issues in that language. To use a localized version of the schema file, simply set the `$schema` property in your file to point to a localized version. For example, the below example JSON and image shows the Japanese language help text for the `state` property in a context file.

```JSON theme={null}
//Example context file
{
  "$schema": "https://raw.githubusercontent.com/microsoft/xbox-game-streaming-tools/main/touch-adaptation-kit/schemas/ja-JP/context/v4.0/context.json",

  "state": {
    "enableReload": false
  }
}
```

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/game-streaming-tak-vscode-intellisense.png?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=fd518d059cf0dba1260bddf95bc71960" alt="Screenshot of Visual Studio Code Intellisense in Japanese" width="1276" height="480" data-path="images/gdk/features/common/game-streaming-tak-vscode-intellisense.png" />


## Related topics

- [Building touch control layouts for XBOX game streaming](/build/core-features/common/game-streaming/building-touch-layouts/index.md)
- [A designer's guide to building touch controls](/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-tak-designers-guide.md)
- [Deploying your touch control layouts](/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-touch-deploying-touch-layout.md)
- [Changing Touch Control Layouts Based On Game State](/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-touch-changing-layouts-game-state.md)
- [Driving Touch Control Layout](/build/core-features/common/game-streaming/building-touch-layouts/samples/game-streaming-touch-tak-sample-driving.md)
