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.

 
Sélectionnez
                        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:

 
Sélectionnez
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;