<link rel="stylesheet" href="../style.css" />

[TOC]
# fuchsia.settings

<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>

## **PROTOCOLS**

## Accessibility {#Accessibility}
*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=13)*
<p>Modify or watch accessibility settings that are persisted.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#Accessibility.Set}

<p>Sets [AccessibilitySettings] settings. Any field not explicitly set in the table performs a
no-op, and will not make any changes.</p>

#### Request {#Accessibility.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#AccessibilitySettings'>AccessibilitySettings</a></code>
            </td>
        </tr>
</table>


#### Response {#Accessibility.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Accessibility_Set_Result'>Accessibility_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Accessibility.Watch}

<p>Gets the current value of all accessibility settings. Returns
immediately on first call; subsequent calls return when any of the
values change.</p>
<ul>
<li><code>settings</code> all current values of the accessibility settings.</li>
</ul>
<ul>
<li>see <a class='link' href='#AccessibilitySettings'>AccessibilitySettings</a> for their meaning.</li>
</ul>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Accessibility.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Accessibility.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#AccessibilitySettings'>AccessibilitySettings</a></code>
            </td>
        </tr>
</table>

## Audio {#Audio}
*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=13)*
<p>Settings related to audio.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#Audio.Set}

<p>Sets audio settings. Any field not explicitly set in the table performs a
no-op, and will not make any changes.</p>

#### Request {#Audio.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#AudioSettings'>AudioSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#Audio.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Audio_Set_Result'>Audio_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Audio.Watch}

<p>Gets the current [AudioSettings]. Returns immediately on first call;
subsequent calls return when the value changes.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Audio.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Audio.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#AudioSettings'>AudioSettings</a></code>
            </td>
        </tr>
</table>

## Display {#Display}
*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=13)*
<p>Settings related to display.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#Display.Set}

<p>Sets display settings. Any field not explicitly set in the table performs a
no-op, and will not make any changes.</p>

#### Request {#Display.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#DisplaySettings'>DisplaySettings</a></code>
            </td>
        </tr>
</table>


#### Response {#Display.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Display_Set_Result'>Display_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Display.Watch}

<p>Gets the current [DisplaySettings]. Returns immediately on first call;
subsequent calls return when the value changes.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Display.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Display.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#DisplaySettings'>DisplaySettings</a></code>
            </td>
        </tr>
</table>

### WatchLightSensor {#Display.WatchLightSensor}

<p>Obtains the current data from the light sensor. Returns immediately on
first call; subsequent calls return when the light sensor value changes
by a certain amount measured in lux.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Display.WatchLightSensor_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>delta</code></td>
            <td>
                <code>float32</code>
            </td>
        </tr>
</table>


#### Response {#Display.WatchLightSensor_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>light_sensor_data</code></td>
            <td>
                <code><a class='link' href='#LightSensorData'>LightSensorData</a></code>
            </td>
        </tr>
</table>

## DoNotDisturb {#DoNotDisturb}
*Defined in [fuchsia.settings/do_not_disturb.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/do_not_disturb.fidl;l=15)*
<p>Modify or watch do-not-disturb (DND) mode. While DND is active, distractions
created by the device are reduced or eliminated. E.g. bootup is silent,
incoming calls could be rejected or silent, and notifications could be
paused, silent, or hidden. High-priority disruptions like alarms can be
allowed.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#DoNotDisturb.Set}

<p>Sets <a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a> settings. Any field not explicitly set in
the table performs a no-op, and will not make any changes.</p>

#### Request {#DoNotDisturb.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#DoNotDisturb.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#DoNotDisturb_Set_Result'>DoNotDisturb_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#DoNotDisturb.Watch}

<p>Gets the current <a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a>. Returns immediately on first
call; subsequent calls return when the values change.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#DoNotDisturb.Watch_Request}

&lt;EMPTY&gt;


#### Response {#DoNotDisturb.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#DoNotDisturbSettings'>DoNotDisturbSettings</a></code>
            </td>
        </tr>
</table>

## FactoryReset {#FactoryReset}
*Defined in [fuchsia.settings/factory_reset.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/factory_reset.fidl;l=8)*
<p>Settings related to factory reset.</p>

### Set {#FactoryReset.Set}

<p>Sets factory reset settings. Any field not explicitly set in the table
performs a no-op, and will not make any changes.</p>

#### Request {#FactoryReset.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#FactoryResetSettings'>FactoryResetSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#FactoryReset.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#FactoryReset_Set_Result'>FactoryReset_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#FactoryReset.Watch}

<p>Notifies of a change in information about the factory reset settings.</p>
<p>On a given connection, the first call will return the current <code>settings</code>
value while subsequent calls will only return the new <code>settings</code> value
upon a value change. This follows the hanging get pattern.</p>
<p>If this call fails, it is considered a fatal error and the channel will
be closed.</p>

#### Request {#FactoryReset.Watch_Request}

&lt;EMPTY&gt;


#### Response {#FactoryReset.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#FactoryResetSettings'>FactoryResetSettings</a></code>
            </td>
        </tr>
</table>

## Input {#Input}
*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=11)*
<p>Settings related to input to the device.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#Input.Set}

<p>Requests software input devices to set their software state. May
not necessarily change the overall state of the device, depending on
the hardware state. Will modify the software state of the existing
device if a known device_name and device_type are passed. Otherwise
it will add a new input device. Devices not included in the SetStates
call will not be modified.</p>

#### Request {#Input.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>input_states</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#InputState'>InputState</a>&gt;</code>
            </td>
        </tr>
</table>


#### Response {#Input.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Input_Set_Result'>Input_Set_Result</a></code>
            </td>
        </tr>
</table>

### SetStates {#Input.SetStates}

<p>Requests software input devices to set their software state. May
not necessarily change the overall state of the device, depending on
the hardware state. Will modify the software state of the existing
device if a known device_name and device_type are passed. Otherwise
it will add a new input device. Devices not included in the SetStates
call will not be modified.</p>

#### Request {#Input.SetStates_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>input_states</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#InputState'>InputState</a>&gt;</code>
            </td>
        </tr>
</table>


#### Response {#Input.SetStates_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Input_SetStates_Result'>Input_SetStates_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Input.Watch}

<p>Gets the current |InputSettings|. Returns immediately on first call;
subsequent calls return when the value changes.</p>
<p>When any of the input devices' states change, this will return the
full [InputSettings] object, containing the states for all the
available input devices on the target device.</p>
<p>To find the state of a specific input device, the devices vector
contained in settings can be iterated through to find a specific
[DeviceType]. If there are multiple devices of the same [DeviceType],
the [InputDevice]'s device_name can be examined in conjunction with
the [DeviceType] to find the desired input device. Together, the
device_name and [DeviceType] uniquely identify an [InputDevice].</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Input.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Input.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#InputSettings'>InputSettings</a></code>
            </td>
        </tr>
</table>

### Watch2 {#Input.Watch2}

<p>Gets the current |InputSettings|. Returns immediately on first call;
subsequent calls return when the value changes.</p>
<p>When any of the input devices' states change, this will return the
full [InputSettings] object, containing the states for all the
available input devices on the target device.</p>
<p>To find the state of a specific input device, the devices vector
contained in settings can be iterated through to find a specific
[DeviceType]. If there are multiple devices of the same [DeviceType],
the [InputDevice]'s device_name can be examined in conjunction with
the [DeviceType] to find the desired input device. Together, the
device_name and [DeviceType] uniquely identify an [InputDevice].</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Input.Watch2_Request}

&lt;EMPTY&gt;


#### Response {#Input.Watch2_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#InputSettings'>InputSettings</a></code>
            </td>
        </tr>
</table>

## Intl {#Intl}
*Defined in [fuchsia.settings/intl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/intl.fidl;l=15)*
<p>Settings related to internationalization such as locale, time zone, and
temperature units.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR,
FILE_READ_ERROR</p>

### Set {#Intl.Set}

<p>Sets [IntlSettings] settings. Any field not explicitly set in the table performs a
no-op, and will not make any changes.</p>

#### Request {#Intl.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#IntlSettings'>IntlSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#Intl.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Intl_Set_Result'>Intl_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Intl.Watch}

<p>Gets the current [IntlSettings]. Returns immediately on first call;
subsequent calls return when the value changes.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Intl.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Intl.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#IntlSettings'>IntlSettings</a></code>
            </td>
        </tr>
</table>

## Keyboard {#Keyboard}
*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=45)*
<p>The SetUI protocol for reading and modifying the keyboard settings.</p>

### Set {#Keyboard.Set}

<p>Setting protocol: if a field is left unset, it is not modified.
To clear a field, set it to its type's &quot;zero&quot; value.</p>

#### Request {#Keyboard.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#KeyboardSettings'>KeyboardSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#Keyboard.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#KeyboardSet_Set_Result'>KeyboardSet_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Keyboard.Watch}

<p>The Watch protocol is the same as in the other <code>fuchsia.settings.*</code> protocols.</p>
<p>Returns immediately on first call; on subsequent calls it blocks until the settings
change, and then returns following the &quot;hanging get&quot; pattern.</p>

#### Request {#Keyboard.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Keyboard.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#KeyboardSettings'>KeyboardSettings</a></code>
            </td>
        </tr>
</table>

## KeyboardSet {#KeyboardSet}
*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=24)*
<p>The mutable API for modifying the keyboard settings.</p>

### Set {#KeyboardSet.Set}

<p>Setting protocol: if a field is left unset, it is not modified.
To clear a field, set it to its type's &quot;zero&quot; value.</p>

#### Request {#KeyboardSet.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#KeyboardSettings'>KeyboardSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#KeyboardSet.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#KeyboardSet_Set_Result'>KeyboardSet_Set_Result</a></code>
            </td>
        </tr>
</table>

## KeyboardWatch {#KeyboardWatch}
*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=33)*
<p>The read-only API for monitoring the changes to the keyboard settings.</p>

### Watch {#KeyboardWatch.Watch}

<p>The Watch protocol is the same as in the other <code>fuchsia.settings.*</code> protocols.</p>
<p>Returns immediately on first call; on subsequent calls it blocks until the settings
change, and then returns following the &quot;hanging get&quot; pattern.</p>

#### Request {#KeyboardWatch.Watch_Request}

&lt;EMPTY&gt;


#### Response {#KeyboardWatch.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#KeyboardSettings'>KeyboardSettings</a></code>
            </td>
        </tr>
</table>

## Light {#Light}
*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=83)*

### SetLightGroupValues {#Light.SetLightGroupValues}

<p>Sets the values for the lights in the group with the given name.</p>
<p>If the provided value does not match the light group's type, this
call will fail.</p>
<p>The requested changes may not take immediate effect if
the light is forced to a certain state by the device's hardware. This
call will still succeed, but the light's value may not change.</p>

#### Request {#Light.SetLightGroupValues_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>name</code></td>
            <td>
                <code>string[32]</code>
            </td>
        </tr>
        <tr>
            <td><code>state</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#LightState'>LightState</a>&gt;</code>
            </td>
        </tr>
</table>


#### Response {#Light.SetLightGroupValues_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Light_SetLightGroupValues_Result'>Light_SetLightGroupValues_Result</a></code>
            </td>
        </tr>
</table>

### WatchLightGroup {#Light.WatchLightGroup}

<p>Fetches information on an individual light group on the device with the
given name. Returns immediately on first call; subsequent calls return
when the value changes.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Light.WatchLightGroup_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>name</code></td>
            <td>
                <code>string[32]</code>
            </td>
        </tr>
</table>


#### Response {#Light.WatchLightGroup_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>group</code></td>
            <td>
                <code><a class='link' href='#LightGroup'>LightGroup</a></code>
            </td>
        </tr>
</table>

### WatchLightGroups {#Light.WatchLightGroups}

<p>Fetches information on the controllable light groups on the device.
Returns immediately on first call; subsequent calls return when the
value changes.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Light.WatchLightGroups_Request}

&lt;EMPTY&gt;


#### Response {#Light.WatchLightGroups_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>groups</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#LightGroup'>LightGroup</a>&gt;</code>
            </td>
        </tr>
</table>

## NightMode {#NightMode}
*Defined in [fuchsia.settings/night_mode.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/night_mode.fidl;l=17)*
<p>Modify or watch Night Mode setting. Night mode puts the device in a
restricted mode which can be overrided if the user prefers. During night
mode, the following settings apply as per night mode parameters:</p>
<ol>
<li>DoNotDisturb is enabled/not.</li>
<li>System volume is set to an override maximum.</li>
<li>LED Brightness is set to an overridable maximum.</li>
<li>Sleep mode is enabled/not.</li>
</ol>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#NightMode.Set}

<p>Sets <a class='link' href='#NightModeSettings'>NightModeSettings</a> settings. Any field not explicitly set in
the table performs a no-op, and will not make any changes.</p>

#### Request {#NightMode.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#NightModeSettings'>NightModeSettings</a></code>
            </td>
        </tr>
</table>


#### Response {#NightMode.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#NightMode_Set_Result'>NightMode_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#NightMode.Watch}

<p>Gets the current <a class='link' href='#NightModeSettings'>NightModeSettings</a>. Returns immediately on first
call; subsequent calls return when the values change.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#NightMode.Watch_Request}

&lt;EMPTY&gt;


#### Response {#NightMode.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#NightModeSettings'>NightModeSettings</a></code>
            </td>
        </tr>
</table>

## Privacy {#Privacy}
*Defined in [fuchsia.settings/privacy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/privacy.fidl;l=11)*
<p>Settings related to privacy.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#Privacy.Set}

<p>Sets the privacy settings.</p>
<p>Any field not explicitly set in <code>settings</code> performs a no-op, and will not make any changes.</p>

#### Request {#Privacy.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#PrivacySettings'>PrivacySettings</a></code>
            </td>
        </tr>
</table>


#### Response {#Privacy.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Privacy_Set_Result'>Privacy_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Privacy.Watch}

<p>Notifies of a change in privacy settings.</p>
<p>On a given connection, the server will return immediately if this is the first call made,
or if the <code>settings</code> value has changed since a previous call. Otherwise, the server will
wait on a value change before returning the new value. This follows the hanging get pattern.</p>
<p>If this call fails, it is considered a fatal error and the channel will be closed.</p>

#### Request {#Privacy.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Privacy.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#PrivacySettings'>PrivacySettings</a></code>
            </td>
        </tr>
</table>

## Setup {#Setup}
*Defined in [fuchsia.settings/setup.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/setup.fidl;l=11)*
<p>Settings that influence the device's setup behavior.</p>
<p>Supported SettingsEpitaph enums:
REQUEST_NOT_SUPPORTED, INTERNAL_SERVICE_ERROR, PERSISTENT_STORAGE_ERROR</p>

### Set {#Setup.Set}

<p>Changes the settings specified in [SetupSettings]. Any field not set in
the table will not perform any system operation. An error will be
returned if the provided settings is an invalid change (for example, if
it is empty).</p>

#### Request {#Setup.Set_Request}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#SetupSettings'>SetupSettings</a></code>
            </td>
        </tr>
        <tr>
            <td><code>reboot_device</code></td>
            <td>
                <code>bool</code>
            </td>
        </tr>
</table>


#### Response {#Setup.Set_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>result</code></td>
            <td>
                <code><a class='link' href='#Setup_Set_Result'>Setup_Set_Result</a></code>
            </td>
        </tr>
</table>

### Watch {#Setup.Watch}

<p>Gets the current [SetupSettings]. Returns immediately on first call;
subsequent calls return when the value changes.</p>
<p>If this call fails, it is considered a fatal error and the channel
will be closed.</p>

#### Request {#Setup.Watch_Request}

&lt;EMPTY&gt;


#### Response {#Setup.Watch_Response}

<table>
    <tr><th>Name</th><th>Type</th></tr>
        <tr>
            <td><code>settings</code></td>
            <td>
                <code><a class='link' href='#SetupSettings'>SetupSettings</a></code>
            </td>
        </tr>
</table>


## **STRUCTS**

### Accessibility_Set_Response  {#Accessibility_Set_Response data-text="Accessibility_Set_Response"}
*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=31)*

&lt;EMPTY&gt;

### Audio_Set_Response  {#Audio_Set_Response data-text="Audio_Set_Response"}
*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=27)*

&lt;EMPTY&gt;

### Autorepeat  {#Autorepeat data-text="Autorepeat"}
*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=13)*

<table>
    <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
        <tr id="Autorepeat.delay">
            <td><code>delay</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
            </td>
            <td><p>The duration between key actuation and autorepeat actuation.</p>
</td>
            <td>No default</td>
        </tr>
        <tr id="Autorepeat.period">
            <td><code>period</code></td>
            <td>
                <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#duration'>duration</a></code>
            </td>
            <td><p>The duration between two successive autorepeat actuations (1/rate). Rate is defined as
once the autorepeat kicks in, the frequency at which repeated key actuations are
generated per second.</p>
</td>
            <td>No default</td>
        </tr>
</table>

### Display_Set_Response  {#Display_Set_Response data-text="Display_Set_Response"}
*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=39)*

&lt;EMPTY&gt;

### DoNotDisturb_Set_Response  {#DoNotDisturb_Set_Response data-text="DoNotDisturb_Set_Response"}
*Defined in [fuchsia.settings/do_not_disturb.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/do_not_disturb.fidl;l=29)*

&lt;EMPTY&gt;

### FactoryReset_Set_Response  {#FactoryReset_Set_Response data-text="FactoryReset_Set_Response"}
*Defined in [fuchsia.settings/factory_reset.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/factory_reset.fidl;l=25)*

&lt;EMPTY&gt;

### Input_SetStates_Response  {#Input_SetStates_Response data-text="Input_SetStates_Response"}
*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=74)*

&lt;EMPTY&gt;

### Input_Set_Response  {#Input_Set_Response data-text="Input_Set_Response"}
*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=42)*

&lt;EMPTY&gt;

### Intl_Set_Response  {#Intl_Set_Response data-text="Intl_Set_Response"}
*Defined in [fuchsia.settings/intl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/intl.fidl;l=29)*

&lt;EMPTY&gt;

### KeyboardSet_Set_Response  {#KeyboardSet_Set_Response data-text="KeyboardSet_Set_Response"}
*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=29)*

&lt;EMPTY&gt;

### Light_SetLightGroupValues_Response  {#Light_SetLightGroupValues_Response data-text="Light_SetLightGroupValues_Response"}
*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=117)*

&lt;EMPTY&gt;

### NightMode_Set_Response  {#NightMode_Set_Response data-text="NightMode_Set_Response"}
*Defined in [fuchsia.settings/night_mode.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/night_mode.fidl;l=31)*

&lt;EMPTY&gt;

### Privacy_Set_Response  {#Privacy_Set_Response data-text="Privacy_Set_Response"}
*Defined in [fuchsia.settings/privacy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/privacy.fidl;l=28)*

&lt;EMPTY&gt;

### Setup_Set_Response  {#Setup_Set_Response data-text="Setup_Set_Response"}
*Defined in [fuchsia.settings/setup.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/setup.fidl;l=29)*

&lt;EMPTY&gt;


## **ENUMS**

### AudioStreamSettingSource [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#AudioStreamSettingSource data-text="AudioStreamSettingSource"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=31)*
<p>The source of the volume settings. The volume is set according to the source.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="AudioStreamSettingSource.USER">
<td><h3 id="AudioStreamSettingSource.USER" class="add-link hide-from-toc">USER</h3></td>
            <td><code>0</code></td>
            <td><p>The volume is set by the user. When the <code>source</code> in AudioStreamSettings is
set to this, the audio volume is set to <code>user_volume</code>.</p>
</td>
        </tr>
        <tr id="AudioStreamSettingSource.SYSTEM">
<td><h3 id="AudioStreamSettingSource.SYSTEM" class="add-link hide-from-toc">SYSTEM</h3></td>
            <td><code>1</code></td>
            <td><p>The system takes control of the volume. This is used when the system constantly
calculates and changes the volume. The volume is not stored for this source.</p>
</td>
        </tr>
        <tr id="AudioStreamSettingSource.SYSTEM_WITH_FEEDBACK">
<td><h3 id="AudioStreamSettingSource.SYSTEM_WITH_FEEDBACK" class="add-link hide-from-toc">SYSTEM_WITH_FEEDBACK</h3></td>
            <td><code>2</code></td>
            <td><p>The system takes control of the volume. This is used when the system changes
the volume, but we still want to play feedback sounds for these changes. The
volume is not stored for this source.</p>
</td>
        </tr>
</table>

### CaptionFontFamily [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#CaptionFontFamily data-text="CaptionFontFamily"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=112)*
<p>Font family groups for closed captions, specified by 47 CFR §79.102(k).</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="CaptionFontFamily.UNKNOWN">
<td><h3 id="CaptionFontFamily.UNKNOWN" class="add-link hide-from-toc">UNKNOWN</h3></td>
            <td><code>0</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.MONOSPACED_SERIF">
<td><h3 id="CaptionFontFamily.MONOSPACED_SERIF" class="add-link hide-from-toc">MONOSPACED_SERIF</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.PROPORTIONAL_SERIF">
<td><h3 id="CaptionFontFamily.PROPORTIONAL_SERIF" class="add-link hide-from-toc">PROPORTIONAL_SERIF</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.MONOSPACED_SANS_SERIF">
<td><h3 id="CaptionFontFamily.MONOSPACED_SANS_SERIF" class="add-link hide-from-toc">MONOSPACED_SANS_SERIF</h3></td>
            <td><code>3</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.PROPORTIONAL_SANS_SERIF">
<td><h3 id="CaptionFontFamily.PROPORTIONAL_SANS_SERIF" class="add-link hide-from-toc">PROPORTIONAL_SANS_SERIF</h3></td>
            <td><code>4</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.CASUAL">
<td><h3 id="CaptionFontFamily.CASUAL" class="add-link hide-from-toc">CASUAL</h3></td>
            <td><code>5</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.CURSIVE">
<td><h3 id="CaptionFontFamily.CURSIVE" class="add-link hide-from-toc">CURSIVE</h3></td>
            <td><code>6</code></td>
            <td></td>
        </tr>
        <tr id="CaptionFontFamily.SMALL_CAPITALS">
<td><h3 id="CaptionFontFamily.SMALL_CAPITALS" class="add-link hide-from-toc">SMALL_CAPITALS</h3></td>
            <td><code>7</code></td>
            <td></td>
        </tr>
</table>

### ColorBlindnessType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ColorBlindnessType data-text="ColorBlindnessType"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=56)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="ColorBlindnessType.NONE">
<td><h3 id="ColorBlindnessType.NONE" class="add-link hide-from-toc">NONE</h3></td>
            <td><code>0</code></td>
            <td><p>No color blindness.</p>
</td>
        </tr>
        <tr id="ColorBlindnessType.PROTANOMALY">
<td><h3 id="ColorBlindnessType.PROTANOMALY" class="add-link hide-from-toc">PROTANOMALY</h3></td>
            <td><code>1</code></td>
            <td><p>Red-green color blindness due to reduced sensitivity to red light.</p>
</td>
        </tr>
        <tr id="ColorBlindnessType.DEUTERANOMALY">
<td><h3 id="ColorBlindnessType.DEUTERANOMALY" class="add-link hide-from-toc">DEUTERANOMALY</h3></td>
            <td><code>2</code></td>
            <td><p>Red-green color blindness due to reduced sensitivity to green light.</p>
</td>
        </tr>
        <tr id="ColorBlindnessType.TRITANOMALY">
<td><h3 id="ColorBlindnessType.TRITANOMALY" class="add-link hide-from-toc">TRITANOMALY</h3></td>
            <td><code>3</code></td>
            <td><p>Blue-yellow color blindness. It is due to reduced sensitivity to blue
light.</p>
</td>
        </tr>
</table>

### DeviceStateSource [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DeviceStateSource data-text="DeviceStateSource"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=96)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="DeviceStateSource.HARDWARE">
<td><h3 id="DeviceStateSource.HARDWARE" class="add-link hide-from-toc">HARDWARE</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="DeviceStateSource.SOFTWARE">
<td><h3 id="DeviceStateSource.SOFTWARE" class="add-link hide-from-toc">SOFTWARE</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
</table>

### DeviceType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DeviceType data-text="DeviceType"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=91)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="DeviceType.MICROPHONE">
<td><h3 id="DeviceType.MICROPHONE" class="add-link hide-from-toc">MICROPHONE</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="DeviceType.CAMERA">
<td><h3 id="DeviceType.CAMERA" class="add-link hide-from-toc">CAMERA</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
</table>

### EdgeStyle [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#EdgeStyle data-text="EdgeStyle"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=124)*
<p>Edge style for fonts as specified in 47 CFR §79.103(c)(7)</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="EdgeStyle.NONE">
<td><h3 id="EdgeStyle.NONE" class="add-link hide-from-toc">NONE</h3></td>
            <td><code>0</code></td>
            <td><p>No border around fonts.</p>
</td>
        </tr>
        <tr id="EdgeStyle.DROP_SHADOW">
<td><h3 id="EdgeStyle.DROP_SHADOW" class="add-link hide-from-toc">DROP_SHADOW</h3></td>
            <td><code>1</code></td>
            <td><p>A shadow &quot;behind&quot; and slightly offset from each edge.</p>
</td>
        </tr>
        <tr id="EdgeStyle.RAISED">
<td><h3 id="EdgeStyle.RAISED" class="add-link hide-from-toc">RAISED</h3></td>
            <td><code>2</code></td>
            <td><p>A bevel that mimics a 3D raised effect.</p>
</td>
        </tr>
        <tr id="EdgeStyle.DEPRESSED">
<td><h3 id="EdgeStyle.DEPRESSED" class="add-link hide-from-toc">DEPRESSED</h3></td>
            <td><code>3</code></td>
            <td><p>A bevel that mimics a 3D depressed effect.</p>
</td>
        </tr>
        <tr id="EdgeStyle.OUTLINE">
<td><h3 id="EdgeStyle.OUTLINE" class="add-link hide-from-toc">OUTLINE</h3></td>
            <td><code>4</code></td>
            <td><p>A plain border around each shapes.</p>
</td>
        </tr>
</table>

### Error [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Error data-text="Error"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/settings.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/settings.fidl;l=7)*
<p>Common error code used across different settings.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="Error.FAILED">
<td><h3 id="Error.FAILED" class="add-link hide-from-toc">FAILED</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="Error.UNSUPPORTED">
<td><h3 id="Error.UNSUPPORTED" class="add-link hide-from-toc">UNSUPPORTED</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
</table>

### HourCycle [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#HourCycle data-text="HourCycle"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/intl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/intl.fidl;l=34)*
<p>Whether if the time format should be using 12 hour or 24 hour clock. H indicates the
maximum number that the hour indicator will ever show.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="HourCycle.UNKNOWN">
<td><h3 id="HourCycle.UNKNOWN" class="add-link hide-from-toc">UNKNOWN</h3></td>
            <td><code>0</code></td>
            <td></td>
        </tr>
        <tr id="HourCycle.H11">
<td><h3 id="HourCycle.H11" class="add-link hide-from-toc">H11</h3></td>
            <td><code>1</code></td>
            <td><p>12-hour clock, 0:10am after midnight.</p>
</td>
        </tr>
        <tr id="HourCycle.H12">
<td><h3 id="HourCycle.H12" class="add-link hide-from-toc">H12</h3></td>
            <td><code>2</code></td>
            <td><p>12-hour clock, 12:10am after midnight.</p>
</td>
        </tr>
        <tr id="HourCycle.H23">
<td><h3 id="HourCycle.H23" class="add-link hide-from-toc">H23</h3></td>
            <td><code>3</code></td>
            <td><p>24-hour clock, 0:10 after midnight.</p>
</td>
        </tr>
        <tr id="HourCycle.H24">
<td><h3 id="HourCycle.H24" class="add-link hide-from-toc">H24</h3></td>
            <td><code>4</code></td>
            <td><p>24-hour clock, 24:10 after midnight.</p>
</td>
        </tr>
</table>

### LightError [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LightError data-text="LightError"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=67)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="LightError.FAILED">
<td><h3 id="LightError.FAILED" class="add-link hide-from-toc">FAILED</h3></td>
            <td><code>1</code></td>
            <td><p>Call failed for unspecified reasons.</p>
</td>
        </tr>
        <tr id="LightError.UNSUPPORTED">
<td><h3 id="LightError.UNSUPPORTED" class="add-link hide-from-toc">UNSUPPORTED</h3></td>
            <td><code>2</code></td>
            <td><p>Call not supported, this setting may not be present on this .</p>
</td>
        </tr>
        <tr id="LightError.INVALID_NAME">
<td><h3 id="LightError.INVALID_NAME" class="add-link hide-from-toc">INVALID_NAME</h3></td>
            <td><code>3</code></td>
            <td><p>An invalid/unknown light group name was provided.</p>
</td>
        </tr>
        <tr id="LightError.INVALID_VALUE">
<td><h3 id="LightError.INVALID_VALUE" class="add-link hide-from-toc">INVALID_VALUE</h3></td>
            <td><code>4</code></td>
            <td><p>An invalid LightValue was provided that did not match the light group's
LightType or did not match the requirements for the value type.</p>
</td>
        </tr>
</table>

### LightType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LightType data-text="LightType"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=11)*
<p>Enum describing the possible types of values for controlling a light.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="LightType.BRIGHTNESS">
<td><h3 id="LightType.BRIGHTNESS" class="add-link hide-from-toc">BRIGHTNESS</h3></td>
            <td><code>1</code></td>
            <td><p>This type of light supports setting brightness to a uint8_t value.</p>
</td>
        </tr>
        <tr id="LightType.RGB">
<td><h3 id="LightType.RGB" class="add-link hide-from-toc">RGB</h3></td>
            <td><code>2</code></td>
            <td><p>This type of light supports setting an RGB value.</p>
</td>
        </tr>
        <tr id="LightType.SIMPLE">
<td><h3 id="LightType.SIMPLE" class="add-link hide-from-toc">SIMPLE</h3></td>
            <td><code>3</code></td>
            <td><p>Light can only be turned on or off.</p>
</td>
        </tr>
</table>

### LowLightMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LowLightMode data-text="LowLightMode"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=85)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="LowLightMode.DISABLE">
<td><h3 id="LowLightMode.DISABLE" class="add-link hide-from-toc">DISABLE</h3></td>
            <td><code>0</code></td>
            <td><p>Device should not be in low-light mode.</p>
</td>
        </tr>
        <tr id="LowLightMode.DISABLE_IMMEDIATELY">
<td><h3 id="LowLightMode.DISABLE_IMMEDIATELY" class="add-link hide-from-toc">DISABLE_IMMEDIATELY</h3></td>
            <td><code>1</code></td>
            <td><p>Device should not be in low-light mode and should transition
out of it immediately.</p>
</td>
        </tr>
        <tr id="LowLightMode.ENABLE">
<td><h3 id="LowLightMode.ENABLE" class="add-link hide-from-toc">ENABLE</h3></td>
            <td><code>2</code></td>
            <td><p>Device should be in low-light mode.</p>
</td>
        </tr>
</table>

### SettingsEpitaph [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SettingsEpitaph data-text="SettingsEpitaph"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/settings.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/settings.fidl;l=13)*
<p>Common epitaph messages used across different settings.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="SettingsEpitaph.REQUEST_NOT_SUPPORTED">
<td><h3 id="SettingsEpitaph.REQUEST_NOT_SUPPORTED" class="add-link hide-from-toc">REQUEST_NOT_SUPPORTED</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="SettingsEpitaph.INTERNAL_SERVICE_ERROR">
<td><h3 id="SettingsEpitaph.INTERNAL_SERVICE_ERROR" class="add-link hide-from-toc">INTERNAL_SERVICE_ERROR</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
        <tr id="SettingsEpitaph.PERSISTENT_STORAGE_ERROR">
<td><h3 id="SettingsEpitaph.PERSISTENT_STORAGE_ERROR" class="add-link hide-from-toc">PERSISTENT_STORAGE_ERROR</h3></td>
            <td><code>3</code></td>
            <td></td>
        </tr>
        <tr id="SettingsEpitaph.FILE_READ_ERROR">
<td><h3 id="SettingsEpitaph.FILE_READ_ERROR" class="add-link hide-from-toc">FILE_READ_ERROR</h3></td>
            <td><code>4</code></td>
            <td></td>
        </tr>
</table>

### ThemeType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ThemeType data-text="ThemeType"}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=98)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="ThemeType.DEFAULT">
<td><h3 id="ThemeType.DEFAULT" class="add-link hide-from-toc">DEFAULT</h3></td>
            <td><code>0</code></td>
            <td><p>When <code>ThemeType</code> is set to <code>DEFAULT</code> it is up to the specific
<a href="https://fuchsia.dev/fuchsia-src/concepts/build_system/boards_and_products#products">product</a>
to determine what that actually means.</p>
</td>
        </tr>
        <tr id="ThemeType.LIGHT">
<td><h3 id="ThemeType.LIGHT" class="add-link hide-from-toc">LIGHT</h3></td>
            <td><code>1</code></td>
            <td></td>
        </tr>
        <tr id="ThemeType.DARK">
<td><h3 id="ThemeType.DARK" class="add-link hide-from-toc">DARK</h3></td>
            <td><code>2</code></td>
            <td></td>
        </tr>
</table>


## **TABLES**

### AccessibilitySettings  {#AccessibilitySettings data-text="AccessibilitySettings"}


*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=35)*
<p>Supported accessibility settings.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="AccessibilitySettings.audio_description">
<td><h3 id="AccessibilitySettings.audio_description" class="add-link hide-from-toc">1</h3></td>
            <td><code>audio_description</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>For videos, use an alternative audio track (akin to changing languages)
that explains what is happening visually while there is no dialogue.</p>
</td>
        </tr>
        <tr id="AccessibilitySettings.screen_reader">
<td><h3 id="AccessibilitySettings.screen_reader" class="add-link hide-from-toc">2</h3></td>
            <td><code>screen_reader</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Read aloud elements of the screen selected by the user.</p>
</td>
        </tr>
        <tr id="AccessibilitySettings.color_inversion">
<td><h3 id="AccessibilitySettings.color_inversion" class="add-link hide-from-toc">3</h3></td>
            <td><code>color_inversion</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Invert colors on the screen.</p>
</td>
        </tr>
        <tr id="AccessibilitySettings.enable_magnification">
<td><h3 id="AccessibilitySettings.enable_magnification" class="add-link hide-from-toc">4</h3></td>
            <td><code>enable_magnification</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Interpret triple-tap on the touchscreen as a command to zoom in.</p>
</td>
        </tr>
        <tr id="AccessibilitySettings.color_correction">
<td><h3 id="AccessibilitySettings.color_correction" class="add-link hide-from-toc">5</h3></td>
            <td><code>color_correction</code></td>
            <td>
                <code><a class='link' href='#ColorBlindnessType'>ColorBlindnessType</a></code>
            </td>
            <td><p>What type of color-blindness, if any, to correct for.</p>
</td>
        </tr>
        <tr id="AccessibilitySettings.captions_settings">
<td><h3 id="AccessibilitySettings.captions_settings" class="add-link hide-from-toc">6</h3></td>
            <td><code>captions_settings</code></td>
            <td>
                <code><a class='link' href='#CaptionsSettings'>CaptionsSettings</a></code>
            </td>
            <td><p>What kind of sources get closed captions, and how they look.</p>
</td>
        </tr>
</table>

### AudioInput  {#AudioInput data-text="AudioInput"}


*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=79)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="AudioInput.muted">
<td><h3 id="AudioInput.muted" class="add-link hide-from-toc">1</h3></td>
            <td><code>muted</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Whether the audio input is muted. Takes into consideration the hardware state.</p>
</td>
        </tr>
</table>

### AudioSettings  {#AudioSettings data-text="AudioSettings"}


*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=70)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="AudioSettings.streams">
<td><h3 id="AudioSettings.streams" class="add-link hide-from-toc">1</h3></td>
            <td><code>streams</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#AudioStreamSettings'>AudioStreamSettings</a>&gt;[5]</code>
            </td>
            <td><p>Contains the volume setting for all audio stream settings. There should only be
one AudioStreamSettings for each fuchsia.media.AudioRenderUsage.</p>
</td>
        </tr>
        <tr id="AudioSettings.input">
<td><h3 id="AudioSettings.input" class="add-link hide-from-toc">2</h3></td>
            <td><code>input</code></td>
            <td>
                <code><a class='link' href='#AudioInput'>AudioInput</a></code>
            </td>
            <td><p>To be deprecated in favor of fuchsia.settings.InputDeviceSettings.</p>
</td>
        </tr>
</table>

### AudioStreamSettings  {#AudioStreamSettings data-text="AudioStreamSettings"}


*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=58)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="AudioStreamSettings.stream">
<td><h3 id="AudioStreamSettings.stream" class="add-link hide-from-toc">1</h3></td>
            <td><code>stream</code></td>
            <td>
                <code><a class='link' href='../fuchsia.media/'>fuchsia.media</a>/<a class='link' href='../fuchsia.media/#AudioRenderUsage'>AudioRenderUsage</a></code>
            </td>
            <td><p>The audio stream which the settings are applying to.</p>
</td>
        </tr>
        <tr id="AudioStreamSettings.source">
<td><h3 id="AudioStreamSettings.source" class="add-link hide-from-toc">2</h3></td>
            <td><code>source</code></td>
            <td>
                <code><a class='link' href='#AudioStreamSettingSource'>AudioStreamSettingSource</a></code>
            </td>
            <td><p>The volume of <code>stream</code> is set according to the volume settings from <code>source</code>.</p>
</td>
        </tr>
        <tr id="AudioStreamSettings.user_volume">
<td><h3 id="AudioStreamSettings.user_volume" class="add-link hide-from-toc">3</h3></td>
            <td><code>user_volume</code></td>
            <td>
                <code><a class='link' href='#Volume'>Volume</a></code>
            </td>
            <td><p>User level volume setting. If the <code>source</code> is USER, then the volume is set to
<code>user_volume</code>.</p>
</td>
        </tr>
</table>

### CaptionFontStyle  {#CaptionFontStyle data-text="CaptionFontStyle"}


*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=96)*
<p>Font, size, and color of closed captions text.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="CaptionFontStyle.family">
<td><h3 id="CaptionFontStyle.family" class="add-link hide-from-toc">1</h3></td>
            <td><code>family</code></td>
            <td>
                <code><a class='link' href='#CaptionFontFamily'>CaptionFontFamily</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="CaptionFontStyle.color">
<td><h3 id="CaptionFontStyle.color" class="add-link hide-from-toc">2</h3></td>
            <td><code>color</code></td>
            <td>
                <code><a class='link' href='../fuchsia.ui.types/'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/#ColorRgba'>ColorRgba</a></code>
            </td>
            <td><p>47 CFR §79.103(c)(2) requires at least 3-bit RGB for user override of
closed-captions color.</p>
<p>Each color channel should be a finite number otherwise will cause
SetAccessibilityInfo to fail with INVALID_VALUE.</p>
</td>
        </tr>
        <tr id="CaptionFontStyle.relative_size">
<td><h3 id="CaptionFontStyle.relative_size" class="add-link hide-from-toc">3</h3></td>
            <td><code>relative_size</code></td>
            <td>
                <code>float32</code>
            </td>
            <td><p>Size of closed captions text relative to the default captions size. A
range of [0.5, 2] is guaranteed to be supported (as 47 CFR §79.103(c)(4)
establishes). Size should be a finite number.</p>
</td>
        </tr>
        <tr id="CaptionFontStyle.char_edge_style">
<td><h3 id="CaptionFontStyle.char_edge_style" class="add-link hide-from-toc">4</h3></td>
            <td><code>char_edge_style</code></td>
            <td>
                <code><a class='link' href='#EdgeStyle'>EdgeStyle</a></code>
            </td>
            <td></td>
        </tr>
</table>

### CaptionsSettings  {#CaptionsSettings data-text="CaptionsSettings"}


*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=72)*
<p>What kind of sources get closed captions, and how they look.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="CaptionsSettings.for_media">
<td><h3 id="CaptionsSettings.for_media" class="add-link hide-from-toc">1</h3></td>
            <td><code>for_media</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Closed captions enabled for media sources of audio.</p>
</td>
        </tr>
        <tr id="CaptionsSettings.for_tts">
<td><h3 id="CaptionsSettings.for_tts" class="add-link hide-from-toc">2</h3></td>
            <td><code>for_tts</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Closed captions enabled for Text-To-Speech sources of audio.</p>
</td>
        </tr>
        <tr id="CaptionsSettings.font_style">
<td><h3 id="CaptionsSettings.font_style" class="add-link hide-from-toc">3</h3></td>
            <td><code>font_style</code></td>
            <td>
                <code><a class='link' href='#CaptionFontStyle'>CaptionFontStyle</a></code>
            </td>
            <td><p>Font style and color used for the closed captions text.</p>
</td>
        </tr>
        <tr id="CaptionsSettings.window_color">
<td><h3 id="CaptionsSettings.window_color" class="add-link hide-from-toc">4</h3></td>
            <td><code>window_color</code></td>
            <td>
                <code><a class='link' href='../fuchsia.ui.types/'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/#ColorRgba'>ColorRgba</a></code>
            </td>
            <td><p>Border color used around the closed captions window.</p>
<p>Each color channel should be a finite number otherwise will cause
SetAccessibilityInfo to fail with INVALID_VALUE.</p>
</td>
        </tr>
        <tr id="CaptionsSettings.background_color">
<td><h3 id="CaptionsSettings.background_color" class="add-link hide-from-toc">5</h3></td>
            <td><code>background_color</code></td>
            <td>
                <code><a class='link' href='../fuchsia.ui.types/'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/#ColorRgba'>ColorRgba</a></code>
            </td>
            <td><p>Background color of the closed captions window.</p>
<p>Each color channel should be a finite number otherwise will cause
SetAccessibilityInfo to fail with INVALID_VALUE.</p>
</td>
        </tr>
</table>

### DeviceState  {#DeviceState data-text="DeviceState"}


*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=129)*
<p>Holds the state for an |InputDevice|.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="DeviceState.toggle_flags">
<td><h3 id="DeviceState.toggle_flags" class="add-link hide-from-toc">1</h3></td>
            <td><code>toggle_flags</code></td>
            <td>
                <code><a class='link' href='#ToggleStateFlags'>ToggleStateFlags</a></code>
            </td>
            <td><p>Controls the on/off state of the input device.</p>
</td>
        </tr>
</table>

### DisplaySettings  {#DisplaySettings data-text="DisplaySettings"}


*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=52)*
<p>DisplaySettings are used to determine the output state of the display.
The display can be toggled between two modes, auto-brightness on and
auto-brightness off.</p>
<p>Adjusted_auto_brightness is used to set a specific brightness level for the
current lighting conditions. Auto-brightness will continue to make the
screen darker and brighter as the surrounding light changes.</p>
<p>Brightness_value is used in manual mode to set a specific brightness level
for the screen. This level will be maintained while in manual mode.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="DisplaySettings.auto_brightness">
<td><h3 id="DisplaySettings.auto_brightness" class="add-link hide-from-toc">1</h3></td>
            <td><code>auto_brightness</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Auto brightness enabled.</p>
</td>
        </tr>
        <tr id="DisplaySettings.brightness_value">
<td><h3 id="DisplaySettings.brightness_value" class="add-link hide-from-toc">2</h3></td>
            <td><code>brightness_value</code></td>
            <td>
                <code>float32</code>
            </td>
            <td><p>Manually set brightness value [0.0 - 1.0]. Not a number, infinity or
negative infinity will cause SetDisplayInfo to fail with INVALID_VALUE.</p>
</td>
        </tr>
        <tr id="DisplaySettings.">
<td><h3 id="DisplaySettings." class="add-link hide-from-toc">3</h3></td>
            <td><code>RESERVED</code></td>
            <td>
                <code></code>
            </td>
            <td></td>
        </tr>
        <tr id="DisplaySettings.low_light_mode">
<td><h3 id="DisplaySettings.low_light_mode" class="add-link hide-from-toc">4</h3></td>
            <td><code>low_light_mode</code></td>
            <td>
                <code><a class='link' href='#LowLightMode'>LowLightMode</a></code>
            </td>
            <td><p>The low light mode state of the device.</p>
</td>
        </tr>
        <tr id="DisplaySettings.screen_enabled">
<td><h3 id="DisplaySettings.screen_enabled" class="add-link hide-from-toc">5</h3></td>
            <td><code>screen_enabled</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Whether the screen is enabled.</p>
</td>
        </tr>
        <tr id="DisplaySettings.theme">
<td><h3 id="DisplaySettings.theme" class="add-link hide-from-toc">6</h3></td>
            <td><code>theme</code></td>
            <td>
                <code><a class='link' href='#Theme'>Theme</a></code>
            </td>
            <td><p>Theme to be used for the device's user interface.</p>
</td>
        </tr>
        <tr id="DisplaySettings.adjusted_auto_brightness">
<td><h3 id="DisplaySettings.adjusted_auto_brightness" class="add-link hide-from-toc">7</h3></td>
            <td><code>adjusted_auto_brightness</code></td>
            <td>
                <code>float32</code>
            </td>
            <td><p>Brightness value to adjust auto-brightness to [0.0 - 1.0].</p>
</td>
        </tr>
</table>

### DoNotDisturbSettings  {#DoNotDisturbSettings data-text="DoNotDisturbSettings"}


*Defined in [fuchsia.settings/do_not_disturb.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/do_not_disturb.fidl;l=33)*
<p>Settings related to do-not-disturb (DND) mode.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="DoNotDisturbSettings.user_initiated_do_not_disturb">
<td><h3 id="DoNotDisturbSettings.user_initiated_do_not_disturb" class="add-link hide-from-toc">1</h3></td>
            <td><code>user_initiated_do_not_disturb</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>If true, the device is in do-not-disturb (DND) mode. Change this value
if you're directly responding to a user-initiated event.</p>
<p>Note that the device could still be in DND mode even if this is set to
<code>false</code>, as <a class='link' href='#night_mode_initiated_do_not_disturb'>night_mode_initiated_do_not_disturb</a> might be <code>true</code>. To
actually disable DND mode, set both fields to <code>false</code>.</p>
<p>To know whether DND is enabled, you need to do a boolean OR of both
fields.</p>
</td>
        </tr>
        <tr id="DoNotDisturbSettings.night_mode_initiated_do_not_disturb">
<td><h3 id="DoNotDisturbSettings.night_mode_initiated_do_not_disturb" class="add-link hide-from-toc">2</h3></td>
            <td><code>night_mode_initiated_do_not_disturb</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>If true, the device is in do-not-disturb (DND) mode. Change this value
if you're trying to enable or disable DND based on a nightly schedule.</p>
<p>Note that the device could still be in DND mode even if this is set to
<code>false</code>, as <a class='link' href='#user_initiated_do_not_disturb'>user_initiated_do_not_disturb</a> might be <code>true</code>. Do not
set that field to <code>false</code> unless you're directly responding to a
user-initiated event.</p>
<p>To know whether DND is enabled, you need to do a boolean OR of both
fields.</p>
</td>
        </tr>
</table>

### FactoryResetSettings  {#FactoryResetSettings data-text="FactoryResetSettings"}


*Defined in [fuchsia.settings/factory_reset.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/factory_reset.fidl;l=29)*
<p>Information about the factory reset settings.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="FactoryResetSettings.is_local_reset_allowed">
<td><h3 id="FactoryResetSettings.is_local_reset_allowed" class="add-link hide-from-toc">1</h3></td>
            <td><code>is_local_reset_allowed</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>When set to true, a user is able to physically perform a factory reset.
When false, that functionality is disabled.</p>
</td>
        </tr>
</table>

### InputDevice  {#InputDevice data-text="InputDevice"}


*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=114)*
<p>Contains the information for an input device. The device is uniquely identified
by the combination of device_name and device_type.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="InputDevice.device_name">
<td><h3 id="InputDevice.device_name" class="add-link hide-from-toc">1</h3></td>
            <td><code>device_name</code></td>
            <td>
                <code>string</code>
            </td>
            <td><p>Uniquely identifies a device within a device type.</p>
</td>
        </tr>
        <tr id="InputDevice.device_type">
<td><h3 id="InputDevice.device_type" class="add-link hide-from-toc">2</h3></td>
            <td><code>device_type</code></td>
            <td>
                <code><a class='link' href='#DeviceType'>DeviceType</a></code>
            </td>
            <td><p>The type of input device (e.g. camera, microphone).</p>
</td>
        </tr>
        <tr id="InputDevice.source_states">
<td><h3 id="InputDevice.source_states" class="add-link hide-from-toc">3</h3></td>
            <td><code>source_states</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#SourceState'>SourceState</a>&gt;</code>
            </td>
            <td><p>The state for each individual [DeviceStateSource].</p>
</td>
        </tr>
        <tr id="InputDevice.mutable_toggle_state">
<td><h3 id="InputDevice.mutable_toggle_state" class="add-link hide-from-toc">4</h3></td>
            <td><code>mutable_toggle_state</code></td>
            <td>
                <code><a class='link' href='#ToggleStateFlags'>ToggleStateFlags</a></code>
            </td>
            <td><p>The software toggle states which are allowed to be changed for a device.</p>
</td>
        </tr>
        <tr id="InputDevice.state">
<td><h3 id="InputDevice.state" class="add-link hide-from-toc">5</h3></td>
            <td><code>state</code></td>
            <td>
                <code><a class='link' href='#DeviceState'>DeviceState</a></code>
            </td>
            <td><p>The overall state of the device, considering the combination
of the source states.</p>
</td>
        </tr>
</table>

### InputSettings  {#InputSettings data-text="InputSettings"}


*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=108)*
<p>Settings related to device input. New format for InputDeviceSettings.</p>
<p>InputSettings contains a list of input devices, e.g. Microphone and Camera
devices. There may be multiple devices of each type. If so, they will be
differentiated by the device_name. If there is only one device of a certain
[DeviceType], then the name defaults to the same as the device type, e.g.
DeviceType::Microphone -&gt; &quot;microphone&quot;.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="InputSettings.devices">
<td><h3 id="InputSettings.devices" class="add-link hide-from-toc">1</h3></td>
            <td><code>devices</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#InputDevice'>InputDevice</a>&gt;</code>
            </td>
            <td></td>
        </tr>
</table>

### InputState  {#InputState data-text="InputState"}


*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=142)*
<p>A subset of |DeviceState|'s properties that clients may pass to change the
software state of an InputDevice.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="InputState.name">
<td><h3 id="InputState.name" class="add-link hide-from-toc">1</h3></td>
            <td><code>name</code></td>
            <td>
                <code>string</code>
            </td>
            <td></td>
        </tr>
        <tr id="InputState.device_type">
<td><h3 id="InputState.device_type" class="add-link hide-from-toc">2</h3></td>
            <td><code>device_type</code></td>
            <td>
                <code><a class='link' href='#DeviceType'>DeviceType</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="InputState.state">
<td><h3 id="InputState.state" class="add-link hide-from-toc">3</h3></td>
            <td><code>state</code></td>
            <td>
                <code><a class='link' href='#DeviceState'>DeviceState</a></code>
            </td>
            <td></td>
        </tr>
</table>

### IntlSettings  {#IntlSettings data-text="IntlSettings"}


*Defined in [fuchsia.settings/intl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/intl.fidl;l=51)*
<p>Collection of internationalization-related settings.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="IntlSettings.locales">
<td><h3 id="IntlSettings.locales" class="add-link hide-from-toc">1</h3></td>
            <td><code>locales</code></td>
            <td>
                <code>vector&lt;<a class='link' href='../fuchsia.intl/'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/#LocaleId'>LocaleId</a>&gt;[10]</code>
            </td>
            <td><p>An ordered list of preferred locales.</p>
</td>
        </tr>
        <tr id="IntlSettings.temperature_unit">
<td><h3 id="IntlSettings.temperature_unit" class="add-link hide-from-toc">2</h3></td>
            <td><code>temperature_unit</code></td>
            <td>
                <code><a class='link' href='../fuchsia.intl/'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/#TemperatureUnit'>TemperatureUnit</a></code>
            </td>
            <td><p>The preferred temperature unit.</p>
</td>
        </tr>
        <tr id="IntlSettings.time_zone_id">
<td><h3 id="IntlSettings.time_zone_id" class="add-link hide-from-toc">3</h3></td>
            <td><code>time_zone_id</code></td>
            <td>
                <code><a class='link' href='../fuchsia.intl/'>fuchsia.intl</a>/<a class='link' href='../fuchsia.intl/#TimeZoneId'>TimeZoneId</a></code>
            </td>
            <td><p>The currently set time zone.</p>
</td>
        </tr>
        <tr id="IntlSettings.hour_cycle">
<td><h3 id="IntlSettings.hour_cycle" class="add-link hide-from-toc">4</h3></td>
            <td><code>hour_cycle</code></td>
            <td>
                <code><a class='link' href='#HourCycle'>HourCycle</a></code>
            </td>
            <td><p>The preferred hour cycle.</p>
</td>
        </tr>
</table>

### KeyboardSettings  {#KeyboardSettings data-text="KeyboardSettings"}


*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=10)*
<p>The various keyboard settings.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="KeyboardSettings.keymap">
<td><h3 id="KeyboardSettings.keymap" class="add-link hide-from-toc">1</h3></td>
            <td><code>keymap</code></td>
            <td>
                <code><a class='link' href='../fuchsia.input/'>fuchsia.input</a>/<a class='link' href='../fuchsia.input/#KeymapId'>KeymapId</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="KeyboardSettings.autorepeat">
<td><h3 id="KeyboardSettings.autorepeat" class="add-link hide-from-toc">2</h3></td>
            <td><code>autorepeat</code></td>
            <td>
                <code><a class='link' href='#Autorepeat'>Autorepeat</a></code>
            </td>
            <td></td>
        </tr>
</table>

### LightGroup  {#LightGroup data-text="LightGroup"}


*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=49)*
<p>Information about a controllable light group. A group may have one or more
lights.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="LightGroup.name">
<td><h3 id="LightGroup.name" class="add-link hide-from-toc">1</h3></td>
            <td><code>name</code></td>
            <td>
                <code>string[32]</code>
            </td>
            <td><p>Identifier for this light group, clients should pass this back into the
service to set the group's light values.</p>
</td>
        </tr>
        <tr id="LightGroup.enabled">
<td><h3 id="LightGroup.enabled" class="add-link hide-from-toc">2</h3></td>
            <td><code>enabled</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>True if the light group is enabled and changes will be visible to the
user. False if the light group is forced off by hardware. If the light
group is disabled, its value can still be set, but the change may not be
visible until the light group is back on.</p>
</td>
        </tr>
        <tr id="LightGroup.type">
<td><h3 id="LightGroup.type" class="add-link hide-from-toc">3</h3></td>
            <td><code>type</code></td>
            <td>
                <code><a class='link' href='#LightType'>LightType</a></code>
            </td>
            <td><p>Defines the acceptable value type for controlling this light group.</p>
</td>
        </tr>
        <tr id="LightGroup.lights">
<td><h3 id="LightGroup.lights" class="add-link hide-from-toc">4</h3></td>
            <td><code>lights</code></td>
            <td>
                <code>vector&lt;<a class='link' href='#LightState'>LightState</a>&gt;</code>
            </td>
            <td><p>States of the lights in this group.</p>
</td>
        </tr>
</table>

### LightSensorData  {#LightSensorData data-text="LightSensorData"}


*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=69)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="LightSensorData.illuminance_lux">
<td><h3 id="LightSensorData.illuminance_lux" class="add-link hide-from-toc">1</h3></td>
            <td><code>illuminance_lux</code></td>
            <td>
                <code>float32</code>
            </td>
            <td><p>Brightness from the light sensor (a.k.a. the <code>Clear</code> value in RGBC).</p>
</td>
        </tr>
        <tr id="LightSensorData.color">
<td><h3 id="LightSensorData.color" class="add-link hide-from-toc">2</h3></td>
            <td><code>color</code></td>
            <td>
                <code><a class='link' href='../fuchsia.ui.types/'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/#ColorRgb'>ColorRgb</a></code>
            </td>
            <td><p>Color measured by light sensor in rgb.</p>
</td>
        </tr>
</table>

### LightState  {#LightState data-text="LightState"}


*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=23)*
<p>State of a given light.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="LightState.value">
<td><h3 id="LightState.value" class="add-link hide-from-toc">1</h3></td>
            <td><code>value</code></td>
            <td>
                <code><a class='link' href='#LightValue'>LightValue</a></code>
            </td>
            <td></td>
        </tr>
</table>

### NightModeSettings  {#NightModeSettings data-text="NightModeSettings"}


*Defined in [fuchsia.settings/night_mode.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/night_mode.fidl;l=35)*
<p>Settings related to Night mode.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="NightModeSettings.night_mode_enabled">
<td><h3 id="NightModeSettings.night_mode_enabled" class="add-link hide-from-toc">1</h3></td>
            <td><code>night_mode_enabled</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>If true, the device/user have opted in for NightMode routine.</p>
</td>
        </tr>
</table>

### PrivacySettings  {#PrivacySettings data-text="PrivacySettings"}


*Defined in [fuchsia.settings/privacy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/privacy.fidl;l=31)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="PrivacySettings.user_data_sharing_consent">
<td><h3 id="PrivacySettings.user_data_sharing_consent" class="add-link hide-from-toc">1</h3></td>
            <td><code>user_data_sharing_consent</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Reflects the user consent to have their user data shared with the product owner, e.g., for
metrics collection and crash reporting.</p>
</td>
        </tr>
</table>

### SetupSettings  {#SetupSettings data-text="SetupSettings"}


*Defined in [fuchsia.settings/setup.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/setup.fidl;l=32)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="SetupSettings.enabled_configuration_interfaces">
<td><h3 id="SetupSettings.enabled_configuration_interfaces" class="add-link hide-from-toc">1</h3></td>
            <td><code>enabled_configuration_interfaces</code></td>
            <td>
                <code><a class='link' href='#ConfigurationInterfaces'>ConfigurationInterfaces</a></code>
            </td>
            <td><p>Specifies the network interfaces that the device can be configured
over during setup.</p>
</td>
        </tr>
</table>

### SourceState  {#SourceState data-text="SourceState"}


*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=135)*
<p>Describes what the |source|'s |state| is.</p>

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="SourceState.source">
<td><h3 id="SourceState.source" class="add-link hide-from-toc">1</h3></td>
            <td><code>source</code></td>
            <td>
                <code><a class='link' href='#DeviceStateSource'>DeviceStateSource</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="SourceState.state">
<td><h3 id="SourceState.state" class="add-link hide-from-toc">2</h3></td>
            <td><code>state</code></td>
            <td>
                <code><a class='link' href='#DeviceState'>DeviceState</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Theme  {#Theme data-text="Theme"}


*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=77)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="Theme.theme_type">
<td><h3 id="Theme.theme_type" class="add-link hide-from-toc">1</h3></td>
            <td><code>theme_type</code></td>
            <td>
                <code><a class='link' href='#ThemeType'>ThemeType</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Theme.theme_mode">
<td><h3 id="Theme.theme_mode" class="add-link hide-from-toc">2</h3></td>
            <td><code>theme_mode</code></td>
            <td>
                <code><a class='link' href='#ThemeMode'>ThemeMode</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Volume  {#Volume data-text="Volume"}


*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=47)*

<table>
    <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
        <tr id="Volume.level">
<td><h3 id="Volume.level" class="add-link hide-from-toc">1</h3></td>
            <td><code>level</code></td>
            <td>
                <code>float32</code>
            </td>
            <td><p>The volume level ranged [0.0, 1.0]. The level maps to a dbfs value from a volume
curve in the setting service. Not a number (NaN), infinity or negative infinity
will cause SetVolume to fail with INVALID_VALUE.</p>
</td>
        </tr>
        <tr id="Volume.muted">
<td><h3 id="Volume.muted" class="add-link hide-from-toc">2</h3></td>
            <td><code>muted</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>True if the volume should be muted. If this is true, then the volume is silent,
regardless of <code>level</code>.</p>
</td>
        </tr>
</table>


## **UNIONS**

### Accessibility_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Accessibility_Set_Result data-text="Accessibility_Set_Result"}
*Defined in [fuchsia.settings/accessibility.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/accessibility.fidl;l=31)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Accessibility_Set_Result.response">
<td><h3 id="Accessibility_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Accessibility_Set_Response'>Accessibility_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Accessibility_Set_Result.err">
<td><h3 id="Accessibility_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Audio_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Audio_Set_Result data-text="Audio_Set_Result"}
*Defined in [fuchsia.settings/audio.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/audio.fidl;l=27)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Audio_Set_Result.response">
<td><h3 id="Audio_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Audio_Set_Response'>Audio_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Audio_Set_Result.err">
<td><h3 id="Audio_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Display_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Display_Set_Result data-text="Display_Set_Result"}
*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=39)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Display_Set_Result.response">
<td><h3 id="Display_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Display_Set_Response'>Display_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Display_Set_Result.err">
<td><h3 id="Display_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### DoNotDisturb_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#DoNotDisturb_Set_Result data-text="DoNotDisturb_Set_Result"}
*Defined in [fuchsia.settings/do_not_disturb.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/do_not_disturb.fidl;l=29)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="DoNotDisturb_Set_Result.response">
<td><h3 id="DoNotDisturb_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#DoNotDisturb_Set_Response'>DoNotDisturb_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="DoNotDisturb_Set_Result.err">
<td><h3 id="DoNotDisturb_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### FactoryReset_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#FactoryReset_Set_Result data-text="FactoryReset_Set_Result"}
*Defined in [fuchsia.settings/factory_reset.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/factory_reset.fidl;l=25)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="FactoryReset_Set_Result.response">
<td><h3 id="FactoryReset_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#FactoryReset_Set_Response'>FactoryReset_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="FactoryReset_Set_Result.err">
<td><h3 id="FactoryReset_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Input_SetStates_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Input_SetStates_Result data-text="Input_SetStates_Result"}
*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=74)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Input_SetStates_Result.response">
<td><h3 id="Input_SetStates_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Input_SetStates_Response'>Input_SetStates_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Input_SetStates_Result.err">
<td><h3 id="Input_SetStates_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Input_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Input_Set_Result data-text="Input_Set_Result"}
*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=42)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Input_Set_Result.response">
<td><h3 id="Input_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Input_Set_Response'>Input_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Input_Set_Result.err">
<td><h3 id="Input_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Intl_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Intl_Set_Result data-text="Intl_Set_Result"}
*Defined in [fuchsia.settings/intl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/intl.fidl;l=29)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Intl_Set_Result.response">
<td><h3 id="Intl_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Intl_Set_Response'>Intl_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Intl_Set_Result.err">
<td><h3 id="Intl_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### KeyboardSet_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#KeyboardSet_Set_Result data-text="KeyboardSet_Set_Result"}
*Defined in [fuchsia.settings/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/keyboard.fidl;l=29)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="KeyboardSet_Set_Result.response">
<td><h3 id="KeyboardSet_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#KeyboardSet_Set_Response'>KeyboardSet_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="KeyboardSet_Set_Result.err">
<td><h3 id="KeyboardSet_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### LightValue [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#LightValue data-text="LightValue"}
*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=29)*
<p>Value of a light. Only one of the three values in the union will be present,
depending on the light's LightType.</p>
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="LightValue.on">
<td><h3 id="LightValue.on" class="add-link hide-from-toc">1</h3></td>
            <td><code>on</code></td>
            <td>
                <code>bool</code>
            </td>
            <td><p>Lights with LightType.SIMPLE will have this value.</p>
</td>
        </tr>
        <tr id="LightValue.brightness">
<td><h3 id="LightValue.brightness" class="add-link hide-from-toc">2</h3></td>
            <td><code>brightness</code></td>
            <td>
                <code>float64</code>
            </td>
            <td><p>Lights with LightType.BRIGHTNESS will have this value, a floating point
value 0.0 to 1.0 inclusive, where 0.0 means the light is off. Not a
number (NaN), infinity or negative infinity will cause SetLightGroup to
fail with INVALID_VALUE.</p>
</td>
        </tr>
        <tr id="LightValue.color">
<td><h3 id="LightValue.color" class="add-link hide-from-toc">3</h3></td>
            <td><code>color</code></td>
            <td>
                <code><a class='link' href='../fuchsia.ui.types/'>fuchsia.ui.types</a>/<a class='link' href='../fuchsia.ui.types/#ColorRgb'>ColorRgb</a></code>
            </td>
            <td><p>Lights with LightType.RGB will have this value.</p>
<p>Each color channel should be a value between 0.0 and 1.0 inclusive.
Values outside this range will cause SetLightGroup to fail with
INVALID_VALUE.</p>
</td>
        </tr>
</table>

### Light_SetLightGroupValues_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Light_SetLightGroupValues_Result data-text="Light_SetLightGroupValues_Result"}
*Defined in [fuchsia.settings/light.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=117)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Light_SetLightGroupValues_Result.response">
<td><h3 id="Light_SetLightGroupValues_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Light_SetLightGroupValues_Response'>Light_SetLightGroupValues_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Light_SetLightGroupValues_Result.err">
<td><h3 id="Light_SetLightGroupValues_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#LightError'>LightError</a></code>
            </td>
            <td></td>
        </tr>
</table>

### NightMode_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#NightMode_Set_Result data-text="NightMode_Set_Result"}
*Defined in [fuchsia.settings/night_mode.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/night_mode.fidl;l=31)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="NightMode_Set_Result.response">
<td><h3 id="NightMode_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#NightMode_Set_Response'>NightMode_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="NightMode_Set_Result.err">
<td><h3 id="NightMode_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Privacy_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Privacy_Set_Result data-text="Privacy_Set_Result"}
*Defined in [fuchsia.settings/privacy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/privacy.fidl;l=28)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Privacy_Set_Result.response">
<td><h3 id="Privacy_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Privacy_Set_Response'>Privacy_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Privacy_Set_Result.err">
<td><h3 id="Privacy_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>

### Setup_Set_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute}  {#Setup_Set_Result data-text="Setup_Set_Result"}
*Defined in [fuchsia.settings/setup.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/setup.fidl;l=29)*
<table>
    <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
        <tr id="Setup_Set_Result.response">
<td><h3 id="Setup_Set_Result.response" class="add-link hide-from-toc">1</h3></td>
            <td><code>response</code></td>
            <td>
                <code><a class='link' href='#Setup_Set_Response'>Setup_Set_Response</a></code>
            </td>
            <td></td>
        </tr>
        <tr id="Setup_Set_Result.err">
<td><h3 id="Setup_Set_Result.err" class="add-link hide-from-toc">2</h3></td>
            <td><code>err</code></td>
            <td>
                <code><a class='link' href='#Error'>Error</a></code>
            </td>
            <td></td>
        </tr>
</table>


## **BITS**

### ConfigurationInterfaces [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ConfigurationInterfaces}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/setup.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/setup.fidl;l=38)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="ConfigurationInterfaces.ETHERNET">
<td><h3 id="ConfigurationInterfaces.ETHERNET" class="add-link hide-from-toc">ETHERNET</h3></td>
            <td>1</td>
            <td></td>
        </tr>
        <tr id="ConfigurationInterfaces.WIFI">
<td><h3 id="ConfigurationInterfaces.WIFI" class="add-link hide-from-toc">WIFI</h3></td>
            <td>2</td>
            <td></td>
        </tr>
</table>

### ThemeMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ThemeMode}
Type: <code>uint32</code>

*Defined in [fuchsia.settings/display.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/display.fidl;l=110)*

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="ThemeMode.AUTO">
<td><h3 id="ThemeMode.AUTO" class="add-link hide-from-toc">AUTO</h3></td>
            <td>1</td>
            <td><p>Product can choose a theme based on ambient cues.</p>
</td>
        </tr>
</table>

### ToggleStateFlags [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ToggleStateFlags}
Type: <code>uint64</code>

*Defined in [fuchsia.settings/input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/input.fidl;l=78)*
<p>A series of flags determining the state of an input device mute toggle.</p>

<table>
    <tr><th>Name</th><th>Value</th><th>Description</th></tr>
        <tr id="ToggleStateFlags.AVAILABLE">
<td><h3 id="ToggleStateFlags.AVAILABLE" class="add-link hide-from-toc">AVAILABLE</h3></td>
            <td>1</td>
            <td><p>The input device exists and is neither muted nor disabled.</p>
</td>
        </tr>
        <tr id="ToggleStateFlags.ACTIVE">
<td><h3 id="ToggleStateFlags.ACTIVE" class="add-link hide-from-toc">ACTIVE</h3></td>
            <td>2</td>
            <td><p>The input device is being used.</p>
</td>
        </tr>
        <tr id="ToggleStateFlags.MUTED">
<td><h3 id="ToggleStateFlags.MUTED" class="add-link hide-from-toc">MUTED</h3></td>
            <td>4</td>
            <td><p>The input device could be available if it was enabled, but it is muted.</p>
</td>
        </tr>
        <tr id="ToggleStateFlags.DISABLED">
<td><h3 id="ToggleStateFlags.DISABLED" class="add-link hide-from-toc">DISABLED</h3></td>
            <td>8</td>
            <td><p>The input device is permanently disabled, e.g. by policy.</p>
</td>
        </tr>
        <tr id="ToggleStateFlags.ERROR">
<td><h3 id="ToggleStateFlags.ERROR" class="add-link hide-from-toc">ERROR</h3></td>
            <td>16</td>
            <td><p>The state cannot be determined.</p>
</td>
        </tr>
</table>


## **CONSTANTS**

<table>
    <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
        <tr id="MAX_LIGHT_NAME_LENGTH">
            <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.settings/light.fidl;l=8">MAX_LIGHT_NAME_LENGTH</a></td>
                <td>
                    <code>32</code>
                </td>
                <td><code>uint8</code></td>
            <td></td>
        </tr>
</table>
