<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Copyright 2022 The ChromiumOS Authors
  Use of this source code is governed by a BSD-style license that can be
  found in the LICENSE file.
-->
<node name="/org/chromium/Rgbkbd">
  <interface name="org.chromium.Rgbkbd">
    <method name="GetRgbKeyboardCapabilities">
      <tp:docstring>
        Retrieve whether or not RGB keyboard is supported for the current device. It
        can be one of the enum values of rgbkbd::RgbKeyboardCapabilities. See
        platform2/system_api/dbus/rgbkbd/dbus-constants.h
      </tp:docstring>
      <arg name="keyboard_capabilities" type="u" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="async"/>
    </method>
    <method name="SetCapsLockState">
      <tp:docstring>
        When caps lock is enabled, both shift keys are highlighted to a preset
        caps lock highlight color. If the preset color conflicts with the
        colors set for the rest of the keys, an alternate highlight color will
        be chosen. When caps lock is disabled, the shift keys are restored to
        the previously set background color.
      </tp:docstring>
      <arg name="enabled" type="b" direction="in"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
    <method name="SetStaticBackgroundColor">
      <tp:docstring>
        Sets the static background RGB color for the keyboard. If CapsLock is
        enabled, this will not override the Capslock highlight keys. If
        Capslock is disabled, the Capslock highlight keys will reflect this
        background color.
      </tp:docstring>
      <arg name="r" type="y" direction="in"/>
      <arg name="g" type="y" direction="in"/>
      <arg name="b" type="y" direction="in"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
    <method name="SetRainbowMode">
      <tp:docstring>
        Sets the backlight RGB keys of the keyboard to a rainbow color scheme.
        If CapsLock is enabled, this will not override the Capslock highlight
        keys. If Capslock is disabled, the Capslock highlight keys will reflect
        this background color.
      </tp:docstring>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
    <method name="SetTestingMode">
      <tp:docstring>
        Used for testing purposes only. If `enable_testing` is true, the Rgbkbd
        daemon will be configured to a testing mode in which will write Rgbkbd
        calls to logs. If `enable_testing` is false, the Rgbkbd daemon will be
        configured to the non-testing mode.
      </tp:docstring>
      <arg name="enable_testing" type="b" direction="in"/>
      <arg name="capability" type="u" direction="in"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
    <method name="SetAnimationMode">
      <tp:docstring>
        Sets the animation mode for the RGB keys of the keyboard. This overrides
        any static colors or special color mode (e.g. rainbow).
      </tp:docstring>
      <!-- See RgbAnimationMode for valid values. Invalid values are no-opts -->
      <arg name="mode" type="u" direction="in"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>
    <signal name="CapabilityUpdatedForTesting">
      <tp:docstring>
        Signals that the RGB keyboard capability has been updated. This is only
        used for tests.
      </tp:docstring>
      <arg name="capability" type="u" direction="out"/>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </signal>
  </interface>
</node>
