---
name: "XChangeKeyboardDevice"
section: "3x"
platform: "linux"
package: "libxi-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/XChangeKeyboardDevice/3x"
---

# XChangeKeyboardDevice(3x)

change which device is used as the X keyboard

## NAME

XChangeKeyboardDevice - change which device is used as the X keyboard

## SYNTAX

Status XChangeKeyboardDevice(Display \**display*, XDevice \**device*); \

## ARGUMENTS

- *display*

  Specifies the connection to the X server.

- *device*

  Specifies the device to be used as the X keyboard.

## DESCRIPTION

The *XChangeKeyboardDevice* request causes the server to use the specified device as the X keyboard.  The device must have been previously opened by the requesting client via *XOpenDevice* or a *BadDevice* error will result. The device must support input class *Keys*, or a *BadMatch* error will result.  If the server implementation does not support using the requested device as the X keyboard, a *BadDevice* error will result.

If the specified device is grabbed by another client, *AlreadyGrabbed* is returned.  If the specified device is frozen by a grab on another device, *GrabFrozen* is returned. If the request is successful, *Success* is returned.

If the request succeeds, a *ChangeDeviceNotify* event is sent to all clients that have selected that event.  A *MappingNotify* event with request = *MappingKeyboard* is sent to all clients. The specified device becomes the X keyboard and  the old X keyboard becomes accessible through the input extension protocol requests.

*XChangeKeyboardDevice* can generate a *BadDevice* or a *BadMatch* error.

## DIAGNOSTICS

- *BadDevice*

  An invalid device was specified.  The specified device does not exist, has  not been opened by this client via *XOpenInputDevice*,  or is already one of the core X device (pointer or keyboard).  This error may also occur if  the server implementation does not support using the specified device as the X keyboard.

- *BadMatch*

  This error may occur if an *XChangeKeyboardDevice* request was made  specifying a device that has no keys.

## SEE ALSO

XChangePointerDevice\
 *Programming With Xlib*
