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

# XkbSetDeviceButtonActions(3)

Change only the button actions for an input extension device

## NAME

XkbSetDeviceButtonActions - Change only the button actions for an input extension device

## SYNOPSIS

**Bool XkbSetDeviceButtonActions** **(Display \****dpy***,** **XkbDeviceInfoPtr** *device***,** **unsigned int** *first\_button***,** **unsigned int** *num\_buttons***);**

## ARGUMENTS

- *dpy*

  connection to X server

- *device*

  structure defining the device and modifications

- *first\_button*

  number of first button to update, 0 relative

- *num\_buttons*

  number of buttons to update

## DESCRIPTION

*XkbSetDeviceButtonActions* assigns actions to the buttons of the device specified in *device\_info-\>device\_spec.* Actions are assigned to *num\_buttons* buttons beginning with *first\_button* and are taken from the actions specified in *device\_info-\>btn\_acts.*

If the server does not support assignment of Xkb actions to extension device buttons, *XkbSetDeviceButtonActions* has no effect and returns False. If the device has no buttons or if *first\_button* or *num\_buttons* specify buttons outside of the valid range as determined by *device\_info-\>num\_btns,* the function has no effect and returns False. Otherwise, *XkbSetDeviceButtonActions* sends a request to the server to change the actions for the specified buttons and returns True.

If the actual request sent to the server involved illegal button numbers, a BadValue protocol error is generated. If an invalid device identifier is specified in *device\_info-\>device\_spec,* a BadKeyboard protocol error results. If the actual device specified in *device\_info-\>device\_spec* does not contain buttons and a request affecting buttons is made, a BadMatch protocol error is generated.

## DIAGNOSTICS

- **BadKeyboard**

  The device specified was not a valid core or input extension device

- **BadMatch**

  A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid

- **BadValue**

  An argument is out of range
