HOME

TheInfoList



OR:

In human–computer interfaces, the X keyboard extension or XKB is a part of the
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting wi ...
that extends the ability to control the
keyboard Keyboard may refer to: Text input * Keyboard, part of a typewriter * Computer keyboard ** Keyboard layout, the software control of computer keyboards and their mapping ** Keyboard technology, computer keyboard hardware and firmware Music * Mu ...
over what is offered by the
X Window System core protocol The X Window System core protocolRobert W. Scheifler and James Gettys: ''X Window System: Core and extension protocols, X version 11, releases 6 and 6.1'', Digital Press 1996, RFC 1013Grant EdwardsAn Introduction to X11 User Interfaces/ref> is the ...
, and allows to use multiple keyboard layouts. Its main features are: * enhanced support for ''
modifier Modifier may refer to: * Grammatical modifier, a word that modifies the meaning of another word or limits its meaning ** Compound modifier, two or more words that modify a noun ** Dangling modifier, a word or phrase that modifies a clause in an am ...
s'' (, , etc.); * better treatment of ''key groups'' (typically keyboard layouts); * extended control of keyboard indicators ( LEDs) and
bell A bell is a directly struck idiophone percussion instrument. Most bells have the shape of a hollow cup that when struck vibrates in a single strong strike tone, with its sides forming an efficient resonator. The strike may be made by an inte ...
s; * various new keyboard parameters (controls); * association of actions (of a particular kind) to keys. XKB is composed of two parts: a server extension and a client library. Modern versions of
Xlib Xlib (also known as libX11) is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the ...
contain XKB, which is active by default. Client programs not using this extension can deactivate it before connecting with the server, or can simply work normally as the extension simulates the core protocol by default. XKB is also used by
Wayland compositor Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a '' Wayland compositor ...
s and
kmscon Kmscon is a virtual console that runs in userspace and intends to replace the Linux console, a terminal built into the Linux kernel. Kmscon uses the KMS driver for its output, it is multiseat-capable, and supports internationalized keyboard in ...
.


Latched and locked modifiers

XKB allows a modifier to be ''locked'' or ''latched'', other than being in its regular state. Normally, a modifier is active exactly when it is pressed, like the Shift. However, a modifier may also be locked, like the Caps Lock modifier. When a modifier is locked, it remains active until it is explicitly deactivated. An intermediate condition between regular and locked is the latched state: When a modifier is latched, it remains active, but only until the next non-modifier key is pressed. XKB allows a client application to explicitly latch or lock a modifier. Moreover, an application can bind a key press or release to a modifier state change. This way, a modifier may automatically become latched or locked whenever a key is pressed or released.


Key groups

XKB allows for the keyboard to switch between any of four different character groups. This is usually done for making a keyboard behave like a keyboard of a different language. In this context, the set of characters that is generated by the keyboard is called a ''group'', and a keyboard can switch to a different group at any time. XKB defines some ''group selectors'' (which are simply called ''groups'' in the specification). As with modifiers, a group selector can be associated with a key, but can also be latched or locked.


Controls

The behavior of the keyboard depends on a number of parameters that can be changed by the clients. These parameters are called ''controls''. For example, the ''SlowKey'' control can be used to ignore short keypresses. Another control is the ''MouseKeys'', which makes some keypresses to simulate mouse movements. The control only indicates whether this simulation is active or not; which keys produce the movement is not considered a part of the control, but is specified by attaching actions to these keys. The above two controls are boolean: they are either active or not. The ''PerKeyRepeat'' is a control that is not boolean. Namely, it is a mask that says which keys are in autorepeat mode. According to the specification, non-boolean controls are "always active": that means that they always depends on a set of parameters (in this case, the mask), but that there is no single bit that can be used to deactivate the effects of the control completely. Other than being boolean or non-boolean, controls also classifies as affecting the behavior of the server and affecting the behavior of the client library. The two above are server controls. Client library controls affect the translation of a keycode or a sequence of keycodes into a string (''XLookupString'') and event delivery.


Actions

XKB allows for associating actions with key presses, which moves some of the burden of input event processing from client applications to the X server. However, the actions that can be associated with keys are limited to the following: # Change the state of a modifier, making it active, inactive, latched or locked # Change the state of the group selectors (same as modifiers) # Simulate a mouse event (movement or button activity) # Change the active screen (this kind of action is optional, that is, not necessarily supported by the server) # Change the state of boolean controls # Generate a message event (that is, a packet that is sent to the client) # Generate a different keycode Moreover, there are some actions related to devices that are available if the server supports the
X Input extension X, or x, is the twenty-fourth and third-to-last letter in the Latin alphabet, used in the modern English alphabet, the alphabets of other western European languages and others worldwide. Its name in English is ''"ex"'' (pronounced ), ...
.


Compatibility problems

The X keyboard extension is incompatible with core keyboard handling and as a result several modifier keys are not working or require workarounds inside emulated environments such as VNC or
Xephyr Xephyr is display server software implementing the X11 display server protocol based on KDrive which targets a window on a host X Server as its framebuffer. It is written by Matthew Allum. Xephyr is an X-on-X implementation and runs on X.Or ...
.


Other

XKB allows better handling of the
keyboard indicator Keyboard may refer to: Text input * Keyboard, part of a typewriter * Computer keyboard ** Keyboard layout, the software control of computer keyboards and their mapping ** Keyboard technology, computer keyboard hardware and firmware Music * Musi ...
s (LEDs). In particular, XKB provides symbolic names for indicators, which allows binding indicators to keyboard activity and checking which indicators are actually present on the keyboard. XKB also improves upon the core protocol's handling of ''bells''; the core protocol only supports one bell, and the only action a client can perform is to ring the bell. XKB supports multiple named bells and allows a client to deactivate some of them and to be informed when a bell is rung. XKB allows a client to query the physical shape of the keyboard, including the shapes of individual keys. In particular, keys are arranged into sections, possibly rotated (as an example, the numeric keypad is typically considered a section). Within a section, keys are arranged into rows. Keys and sections have a geometry, which comprise the approximate outline of the key, its
bounding box In geometry, the minimum or smallest bounding or enclosing box for a point set in dimensions is the box with the smallest measure (area, volume, or hypervolume in higher dimensions) within which all the points lie. When other kinds of measure ...
, and the precise form. Other than keys, the geometry also includes ''doodads'', which are elements on the keyboard that are not keys. The overall shape of the keyboard is a doodad. Information provided about doodads includes their color and any text printed on them (including the font used).


References

* X Consortium Inc. ''The X keyboard extension: library specification'' (1996)
HTMLPDF
* X Consortium Inc. ''The X keyboard extension: protocol specification'' (1996)
PDF
* X Consortium Inc. ''The XKB configuration guide'' (2010
PDF
* X Consortium Inc. ''How to further enhance XKB configuration'' (2002)
PDF


External links

;On XKB
ArchWiki. X keyboard extension

Damiano Venturin. A simple, humble but comprehensive guide to XKB for linux (2016)


* ttps://web.archive.org/web/20190319193206/http://pascal.tsu.ru/en/xkb Ivan Pascal. X keyboard extension— Detailed information on the various XKB Configuration files.
Doug Palmer. An unreliable guide to XKB configuration (2004)
{{XWinSys X Window extensions Wayland extensions