XKBCOMP(1) X Version 11 XKBCOMP(1)

# [NAME](#NAME)

xkbcomp - compile XKB keyboard description

# [SYNOPSIS](#SYNOPSIS)

**xkbcomp** \[*option*] *source* \[*destination*]

# [DESCRIPTION](#DESCRIPTION)

The **xkbcomp** keymap compiler converts a description of an XKB keymap into one of several output formats. The most common use for xkbcomp is to create a compiled keymap file (*.xkm* extension) which can be read directly by XKB-capable X servers or utilities. The keymap compiler can also produce C header files or XKB source files. The C header files produced by xkbcomp can be included by X servers or utilities that need a built-in default keymap. The XKB source files produced by **xkbcomp** are fully resolved and can be used to verify that the files which typically make up an XKB keymap are merged correctly or to create a single file which contains a complete description of the keymap.

The *source* may specify an X display, or an *.xkb* or *.xkm* file; unless explicitly specified, the format of *destination* depends on the format of the source. Compiling a *.xkb* (keymap source) file generates a *.xkm* (compiled keymap file) by default. If the source is a *.xkm* file or an X display, **xkbcomp** generates a keymap source file by default.

If the *destination* is an X display, the keymap for the display is updated with the compiled keymap.

The name of the *destination* is usually computed from the name of the source, with the extension replaced as appropriate. When compiling a single map from a file which contains several maps, **xkbcomp** constructs the destination file name by appending an appropriate extension to the name of the map to be used.

# [OPTIONS](#OPTIONS)

[**-a**](#a)

Show all keyboard information, reporting implicit or derived information as a comment. Only affects *.xkb* format output.

[**-C**](#C)

Produce a C header file as output (.h extension).

[**-dflts**](#dflts)

Compute defaults for any missing components, such as key names.

[**-em1 *msg***](#em1)

Print *msg* before printing first error message.

[**-emp *msg***](#emp)

Print *msg* at the start of each message line.

[**-eml *msg***](#eml)

If there were any errors, print *msg* before exiting.

[**-help, -?**](#help,)

Show available options.

[**-I*dir***](#I)

Specifies top-level directories to be searched for files included by the keymap description. After all directories specified by **-I** options have been searched, the current directory and finally, the default xkb directory /usr/share/X11/xkb will be searched.

To prevent the current and default directories from being searched, use the **-I** option alone (i.e. without a directory), before any **-I** options that specify the directories you do want searched.

[**-i *deviceid***](#i)

If *source* or *destination* is a valid X display, load the keymap from/into the device with the specified ID (not name).

[**-l**](#l)

List maps that specify the *map* pattern in any files listed on the command line (not implemented yet).

[**-m *name***](#m)

Specifies a map to be compiled from an file with multiple entries.

[**-merge**](#merge)

Merge the compiled information with the map from the server (not implemented yet).

[**-o *name***](#o)

Specifies a name for the generated output file. The default is the name of the source file with an appropriate extension for the output format.

[**-opt *parts***](#opt)

Specifies a list of optional parts. Compilation errors in any optional parts are not fatal. Parts may consist of any combination of the letters *c*, *g*, *k*, *s*, and *t*, which specify the compatibility map, geometry, keycodes, symbols and types, respectively.

[**-R*dir***](#R)

Specifies the root directory for relative path names.

[**-synch**](#synch)

Force synchronization for X requests.

[**-version**](#version)

Print version number.

[**-w *lvl***](#w)

Controls the reporting of warnings during compilation. A warning level of 0 disables all warnings; a warning level of 10 enables them all.

[**-xkb**](#xkb)

Generate a source description of the keyboard as output (.xkb extension).

[**-xkm**](#xkm)

Generate a compiled keymap file as output (.xkm extension).

# [SEE ALSO](#SEE_ALSO)

[**setxkbmap**(1)](/man/os/xkbcomp/setxkbmap.1), [**X**(7)](/man/os/xkbcomp/X.7), [**xkeyboard-config**(7)](/man/os/xkbcomp/xkeyboard-config.7)

# [AUTHOR](#AUTHOR)

Erik Fortune, Silicon Graphics

2025-03-31 xkbcomp 1.5.0

---

Document: xkbcomp(1) from xkbcomp 1.5.0-r4 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/app/xkbcomp
