1. NAME▲
XkbFreeDeviceInfo - Free an XkbDeviceInfoRec structure
2. SYNOPSIS ▲
void XkbFreeDeviceInfo (XkbDeviceInfoPtr device_info , unsigned int which , Bool free_all );
3. ARGUMENTS ▲
- - device_info
pointer to XkbDeviceInfoRec in which to free items - - which
mask of components of device_info to free - - free_all
True => free everything, including device_info
4. DESCRIPTION ▲
If free_allis True, the XkbFreeDeviceInfofrees all components of device_infoand the XkbDeviceInfoRec structure pointed to by device_infoitself. If free_allis False, the value of whichdetermines which subcomponents are freed. whichis an inclusive OR of one or more of the values from Table 1. If whichcontains XkbXI_ButtonActionsMask, all button actions associated with device_infoare freed, device_info->btn_actsis set to NULL, and device_info->num_btnsis set to zero. If whichcontains all bits in XkbXI_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with device_infoare freed, device_info->ledsis set to NULL, and device_info->sz_ledsand device_info->num_ledsare set to zero. If whichcontains XkbXI_IndicatorMapsMask, all indicator maps associated with device_infoare cleared, but the number of LEDs and the leds structures themselves is preserved. If whichcontains XkbXI_IndicatorNamesMask, all indicator names associated with device_infoare cleared, but the number of LEDs and the leds structures themselves is preserved. If whichcontains XkbXI_IndicatorStateMask, the indicator state associated with the device_infoleds are set to zeros but the number of LEDs and the leds structures themselves is preserved.
Table 1
XkbDeviceInfoRec Mask Bits
____________________________________________________________________________________
Name XkbDeviceInfoRec Value Capability If Set
Fields Effected
____________________________________________________________________________________
XkbXI_KeyboardsMask (
1L
<<
0
) Clients can use all
Xkb requests and events
with KeyClass devices
supported by the input
device extension.
XkbXI_ButtonActionsMask num_btns (
1L
<<
1
) Clients can assign key
btn_acts actions to buttons
non-
KeyClass input
extension devices.
XkbXI_IndicatorNamesMask leds->
names (
1L
<<
2
) Clients can assign
names to indicators on
non-
KeyClass input
extension devices.
XkbXI_IndicatorMapsMask leds->
maps (
1L
<<
3
) Clients can assign
indicator maps to
indicators on
non-
KeyClass input
extension devices.
XkbXI_IndicatorStateMask leds->
state (
1L
<<
4
) Clients can request
the status of indicators
on non-
KeyClass input
extension devices.
XkbXI_IndicatorsMask sz_leds (
0x1c
) XkbXI_IndicatorNamesMask |
num_leds XkbXI_IndicatorMapsMask |
leds->*
XkbXI_IndicatorStateMask
XkbXI_UnsupportedFeaturesMask unsupported (
1L
<<
15
)
XkbXI_AllDeviceFeaturesMask Those selected (
0x1e
) XkbXI_IndicatorsMask |
by Value Column XkbSI_ButtonActionsMask
masks
XkbXI_AllFeaturesMask Those selected (
0x1f
) XkbSI_AllDeviceFeaturesMask |
by Value Column XkbSI_KeyboardsMask
masks
XkbXI_AllDetailsMask Those selected (
0x801f
) XkbXI_AllFeaturesMask |
by Value column XkbXI_UnsupportedFeaturesMask
masks
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;