1. NAME▲
XkbAllocDeviceLedInfo - Obtain an XkbDeviceLedInfoRec structure
2. SYNOPSIS ▲
Status XkbAllocDeviceLedInfo (XkbDeviceInfoPtr device_info , int num_needed );
3. ARGUMENTS ▲
- - device_info
structure in which to allocate LED space - - num_needed
number of indicators to allocate space for
4. DESCRIPTION ▲
XkbAllocDeviceLedInfoallocates space for an XkbDeviceLedInfoRec and places it in device_info.If num_neededis nonzero, num_neededXkbIndicatorMapRec structures are also allocated and linked into the XkbDeviceLedInfoRec structure. If you request XkbIndicatorMapRec structures be allocated using this request, you must initialize them explicitly. All other fields are initialized to zero. To initialize an XkbDeviceLedInfoRec structure, use XkbAddDeviceLedInfo.
5. STRUCTURES ▲
Information about X Input Extension devices is transferred between a client program and the Xkb extension in an XkbDeviceInfoRec structure:
typedef
struct
{
char
*
name; /(**
name for
device */
Atom type; /(**
name for
class of devices */
unsigned
short
device_spec; /(**
device of interest */
Bool has_own_state; /(**
True=>
this device has its own state */
unsigned
short
supported; /(**
bits indicating supported capabilities */
unsigned
short
unsupported; /(**
bits indicating unsupported capabilities */
unsigned
short
num_btns; /(**
number of entries in btn_acts */
XkbAction *
btn_acts; /(**
button actions */
unsigned
short
sz_leds; /(**
total number of entries in LEDs vector */
unsigned
short
num_leds; /(**
number of valid entries in LEDs vector */
unsigned
short
dflt_kbd_fb; /(**
input extension ID of default
(
core kbd) indicator */
unsigned
short
dflt_led_fb; /(**
input extension ID of default
indicator feedback */
XkbDeviceLedInfoPtr leds; /(**
LED descriptions */
}
XkbDeviceInfoRec, *
XkbDeviceInfoPtr;
typedef
struct
{
unsigned
short
led_class; /(**
class for
this LED device*/
unsigned
short
led_id; /(**
ID for
this LED device */
unsigned
int
phys_indicators; /(**
bits for
which LEDs physically present */
unsigned
int
maps_present; /(**
bits for
which LEDs have maps in maps */
unsigned
int
names_present; /(**
bits for
which LEDs are in names */
unsigned
int
state; /(**
1
bit =>
corresponding LED is on */
Atom names[XkbNumIndicators]; /(**
names for
LEDs */
XkbIndicatorMapRec maps; /(**
indicator maps for
each LED */
}
XkbDeviceLedInfoRec, *
XkbDeviceLedInfoPtr;
Each indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The attributes of each indicator are held in the maps array, which is an array of XkbIndicatorRec structures:
typedef
struct
{
unsigned
char
flags; /(**
how the indicator can be changed */
unsigned
char
which_groups; /(**
match criteria for
groups */
unsigned
char
groups; /(**
which keyboard groups the indicator watches */
unsigned
char
which_mods; /(**
match criteria for
modifiers */
XkbModsRec mods; /(**
which modifiers the indicator watches */
unsigned
int
ctrls; /(**
which controls the indicator watches */
}
XkbIndicatorMapRec, *
XkbIndicatorMapPtr;
This indicator map specifies for each indicator:
5 The conditions under which the keyboard modifier state affects the indicator
5 The conditions under which the keyboard group state affects the indicator
5 The conditions under which the state of the boolean controls affects the indicator
5 The effect (if any) of attempts to explicitly change the state of the indicator using the functions XkbSetControls or XChangeKeyboardControl
6. SEE ALSO ▲
R XkbAddDeviceLedInfo (3),
R XkbSetControls (3)