---
name: "XkbResizeDeviceButtonActions"
section: "3"
platform: "linux"
package: "libx11"
version: "1.8.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XkbResizeDeviceButtonActions"
---

# XkbResizeDeviceButtonActions(3)

Allocate additional space for button actions in an XkbDeviceInfoRec structure

## NAME

XkbResizeDeviceButtonActions - Allocate additional space for button actions in an XkbDeviceInfoRec structure

## SYNOPSIS

**Status XkbResizeDeviceButtonActions** **(XkbDeviceInfoPtr** *device\_info***,** **unsigned int** *new\_total***);**

## ARGUMENTS

- *device\_info*

  structure in which to allocate button actions

- *new\_total*

  new total number of button actions needed

## DESCRIPTION

*XkbResizeDeviceButtonActions* reallocates space, if necessary, to make sure there is room for a total of *new\_total* button actions in the *device\_info* structure. Any new entries allocated are zeroed. If successful, *XkbResizeDeviceButtonActions* returns Success. If *new\_total* is zero, all button actions are deleted, *device\_info-\>num\_btns* is set to zero, and *device\_info-\>btn\_acts* is set to NULL. If *device\_info* is invalid or *new\_total* is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned.

To free an XkbDeviceInfoRec structure, use *XkbFreeDeviceInfo.*

## 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;
```

## DIAGNOSTICS

- **BadAlloc**

  Unable to allocate storage

- **BadValue**

  An argument is out of range

## SEE ALSO

[**XkbFreeDeviceInfo**(3)](/XkbFreeDeviceInfo/3.md)
