The monitor database is written in XML, it can be found in
the db
directory of ddccontrol-db
package.
This directory contains the following files:
options.xml
monitor/%monitor_id%
.xml
control
elements
(e.g. “brightness”) are contained in
group
elements (e.g.
“color
settings”). group
and subgroup
elements
allow the GUI to separate the controls in different branches
on the tree.
options
attributes:
date
: indicates the release
date of the current database (YYYYMMDD format).dbversion
: indicates which
version of database format is used (must be set to
3).group
attributes:
name
: full English group
name.subgroup
attributes:
name
: full English subgroup
name.pattern
: name of the
fullscreen pattern gddccontrol
must display to help the
user to adjust subgroup's controls (optional). For
possible values, see ddccontrol/src/gddccontrol/fspatterns.c
.control
attributes:
id
: abbreviated control
name.name
: full English control
name.address
: DDC/CI address
(optional).type
: one of
these values:
value
element in a command
control, the default value “0x01” will be
used.refresh
(only
for list and command controls): Set whether other
controls must be refreshed after changing list value or
running the command associated with the control
(optional). Possible values:
value
attributes:
id
: abbreviated value
name.name
: full English value name
(it is not needed if there is only one value for command
controls).value
: DDC/CI control value
(optional).File format:
<?xml version="1.0"?> <options date="%date%" dbversion="3"> <group name="%groupname%"> <subgroup name="%subgroupname%" pattern="%patternname%"> <control id="%control_id%" type="value" name="%control_name%" address="%hex_address%"/> <!-- Command using the default 0x01 address --> <control id="%control_id%" type="command" name="%control_name%" address="%hex_address%"/> <control id="%control_id%" type="command" name="%control_name%" address="%hex_address%"> <value id="%value_id%" value="%hex_value%"/> </control> <control id="%control_id%" type="list" name="%control_name%" address="%hex_address%"> <value id="%value_id%" name="%value_name%" value="%hex_value%"/> <value...> </control> <control ...> </subgroup> </group> <group ...> </options>
The caps attribute is optional. Its format is defined in ACCESS.bus specifications.
To add controls to caps, use the add
attribute. To remove
controls from caps, use the remove
attribute.
Note remove is handled before add, so if you remove and add a same control, it will finally be in caps.
List of controls supported by a monitor (optional if you
have an include
element).
control
id
attributes are
defined in options.xml
. If
control
type
is “list” or “command” without default
values, supported values must be defined.
address
attribute
for control
elements
and value
attribute
for value
elements are
optional if they are defined in the general options
file.
The init
attribute in monitor
element define the type of the initialization: DDC/CI
standard (“standard”), or Samsung
(“samsung”).
This attribute is optional, as long as the monitor profile
includes another profile which defines this attribute.
You can set a delay
attribute in control
elements to set the time
in milliseconds to wait after changing the value of this
control. If you don't, a default value is used.
Includes another monitor, manufacturer or standard
profile, specified by the file
attribute.
File format:
<?xml version="1.0"?> <monitor name="%full_monitor_name%" init="[standard|samsung]"> <caps add="%add_caps%" remove="%remove_caps%"/> <controls> <!--- value --> <control id="%control_id%" address="%hex_address%" delay="%wait_time%"/> <!--- command using a default 0x01 value--> <control id="%control_id%" address="%hex_address%" delay="%wait_time%"/> <!--- command --> <control id="%control_id%" address="%hex_address%" delay="%wait_time%"> <value id="activate" value="%hex_value%"/> </control> <!--- list --> <control id="%control_id%" address="%hex_address%" delay="%wait_time%"> <value id="%value_id%" value="%hex_value%"/> <value...> </control> <control...> </controls> <!--- Including VESA generic profile is generally a good idea. --> <include file="VESA"/> </monitor>
If a monitor supports exactly the same controls as another one, you can define it as shown:
<?xml version="1.0"?> <monitor name="%full_monitor_name%"> <caps add="%add_caps%" remove="%remove_caps%"/> <include file="%include_monitor_id%"/> </monitor>