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

# XkbTranslateKeyCode(3)

Translate a keycode to a key symbol and modifiers

## NAME

XkbTranslateKeyCode -  Translate a keycode to a key symbol and modifiers

## SYNOPSIS

**Bool XkbTranslateKeyCode** **(XkbDescPtr** *xkb***,** **KeyCode** *key***,** **unsigned int** *mods***,** **unsigned int \****mods\_rtrn***,** **KeySym \****keysym\_rtrn***);**

## ARGUMENTS

- *xkb*

  keyboard description to use for translation

- *key*

  keycode to translate

- *mods*

  modifiers to apply when translating key

- *mods\_rtrn*

  backfilled with consumed modifiers

- *keysym\_rtrn*

  keysym resulting from translation

## DESCRIPTION

*mods\_rtrn* is backfilled with the modifiers consumed by the translation process. *mods* is a bitwise inclusive OR of the legal modifier masks: ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask.The AlwaysConsumeShiftAndLock library control (see below), if enabled, causes *XkbTranslateKeyCode* to consume shift and lock. *XkbTranslateKeyCode* returns True if the translation resulted in a keysym, and False if it resulted in NoSymbol.

The AlwaysConsumeShiftAndLock control, if enabled, forces *XLookupString* to consume the Shift and Lock modifiers when processing all keys, even if the definition for the key type does not specify these modifiers. The AlwaysConsumeShiftAndLock control is unset by default.

## SEE ALSO

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