3.4.2.1 Selector (Sel)
Selectors come in three forms:
One selection of a set. Radio buttons are a mechanically linked set of buttons where one selection
is always valid. This is a perfect example of the “one selection of a set” form. A radio button set is
defined by a Main item with the Array flag set and the Report Count set to 1. The index returned
in the array field corresponds to the pressed button (or selection). A usage must be declared for
each selection. The array field never returns an index of NULL because one usage is always valid.
An example is Stat Not Ready on the Alphanumeric Display page.
N selections of a set. More than one selection (button) can be valid at a time. Multiple selections
can be returned to the system at one time in a multi-byte array. The “n selections of a set” form is
defined by a Main item with the Array flag set and the Report Count set to n, where n is the
number of selections that can be reported in a single report. An example is a keyboard.
Any selection of a set. The control is implemented as a set of bit fields in which each bit represents
a single selection. This control is defined by a Main item with the Variable flag set and the Report
Size equal to 1. The Report Count will be equal to the number of selections in the set.
Selectors therefore can be implemented in a number of ways: Array[1] (one selection of a set), Array[n] (n
selections of a set), or bitmap (any selection of a set).
Optionally, the array field or set can be named by wrapping a set of Selectors in a logical collection with a
usage attached to it. For details, see Section 3.4.3.1, “Named Array (NAry).”
3.4.2.2 Static Value (SV)
Static values are used to declare a fixed features in a device. They are defined as Constant and treated as
read-only information. Therefore, asserting this field in a Set_Report command has no defined effect.
3.4.2.3 Static Flag (SF)
Static flags are used to declare the existence of a fixed feature in a device. If a Static Flag usage is found in a
Report descriptor then the field must be read to determine whether the feature identified by the flag exists.
A value of 1 indicates existence and a value of 0 indicates non-existence. The absence of a Static Flag usage
implies that the flag is false or the feature defined by the flag is not supported by the device. A Static Flag
must be declared as a Constant. To be accessible by applications, a Static Flag must have a usage assigned to
it.
Static Flags are typically declared in a Feature report as a single-bit field where the value is always read as
1. Attempting to modify this field in a Set_Report command has no effect on a Static Flag.
3.4.2.4 Dynamic Flag (DF)
Dynamic Flags are used to declare the existence of a host-controllable feature in a device. The absence of a
Dynamic Flag usage implies that the flag is false or the feature defined by the flag is not supported by the
device.
Dynamic Flags are typically declared in a report as a single-bit field, where a value of 1 returned by the
device indicates that the feature is enabled. The assertion of 1 by the host will cause the feature to be evoked
and the assertion of 0 indicates that the feature is to be disabled or ignored if the feature is a one-time event
(such as Degauss or Clear Display). A Dynamic Flag Main item must be declared as Data.