86:
568:
281:
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
367:
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
285:
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
221:
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.
234:
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
225:
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.
270:, 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.
298:
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:
364:; 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.
185:
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.
376:, 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).
337:
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
353:(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.
1157:
1096:
522:
557:
505:
462:
842:
258:
The behavior of the keyboard depends on a number of parameters that can be changed by the clients. These parameters are called
801:
467:
250:
in the specification). As with modifiers, a group selector can be associated with a key, but can also be latched or locked.
1101:
531:
357:
116:
96:
1178:
1183:
622:
38:
853:
821:
954:
1032:
979:
886:
213:, other than being in its regular state. Normally, a modifier is active exactly when it is pressed, like the
896:
312:
Change the active screen (this kind of action is optional, that is, not necessarily supported by the server)
439:
435:
542:
472:
1024:
826:
806:
791:
612:
597:
498:
424:
420:
350:
326:
1106:
1047:
959:
929:
769:
1042:
796:
647:
85:
325:
Moreover, there are some actions related to devices that are available if the server supports the
642:
537:
190:
394:
390:
876:
783:
779:
617:
582:
409:
405:
274:
112:
836:
491:
457:
27:
1111:
637:
602:
547:
514:
181:
XKB is composed of two parts: a server extension and a client library. Modern versions of
157:
120:
108:
673:
552:
168:
1172:
1009:
682:
478:
369:
132:
463:
Damiano
Venturin. A simple, humble but comprehensive guide to XKB for linux (2016)
368:
sections have a geometry, which comprise the approximate outline of the key, its
1137:
22:
303:
Change the state of a modifier, making it active, inactive, latched or locked
1052:
1004:
909:
218:
214:
145:
468:
Michal
Kosmulski. Creating custom keyboard layouts for X11 using XKB (2011)
919:
871:
743:
688:
652:
1067:
969:
934:
811:
738:
708:
703:
693:
607:
318:
Generate a message event (that is, a packet that is sent to the client)
266:
control can be used to ignore short keypresses. Another control is the
138:
1132:
1072:
1062:
861:
733:
338:
194:
372:, and the precise form. Other than keys, the geometry also includes
1152:
1147:
1142:
1127:
989:
949:
914:
713:
627:
592:
483:
1057:
999:
974:
964:
944:
939:
924:
904:
881:
866:
816:
759:
723:
718:
698:
182:
487:
1037:
1014:
994:
984:
764:
728:
632:
567:
475:— Detailed information on the various XKB Configuration files.
239:, and a keyboard can switch to a different group at any time.
164:
282:
be used to deactivate the effects of the control completely.
479:
Doug Palmer. An unreliable guide to XKB configuration (2004)
306:
Change the state of the group selectors (same as modifiers)
68:
177:
association of actions (of a particular kind) to keys.
309:
Simulate a mouse event (movement or button activity)
1120:
1089:
1023:
895:
852:
835:
778:
752:
672:
661:
575:
521:
217:. However, a modifier may also be locked, like the
63:
37:
21:
402:The X keyboard extension: protocol specification
387:The X keyboard extension: library specification
499:
8:
16:
174:various new keyboard parameters (controls);
849:
669:
506:
492:
484:
84:
15:
163:extended control of keyboard indicators (
432:How to further enhance XKB configuration
143:
137:
111:that extends the ability to control the
277:: they are either active or not. The
7:
315:Change the state of boolean controls
613:X Display Manager Control Protocol
349:XKB allows better handling of the
14:
1158:Desktop environments (comparison)
473:Ivan Pascal. X keyboard extension
566:
458:ArchWiki. X keyboard extension
1:
119:, and allows to use multiple
117:X Window System core protocol
321:Generate a different keycode
205:XKB allows a modifier to be
201:Latched and locked modifiers
115:over what is offered by the
623:X-Video Motion Compensation
417:The XKB configuration guide
356:XKB also improves upon the
273:The above two controls are
46:; 28 years ago
1200:
564:
246:(which are simply called
97:human–computer interfaces
59:
33:
608:Shared memory extension
126:Its main features are:
543:X Window authorization
333:Compatibility problems
290:) and event delivery.
598:X Rendering Extension
130:enhanced support for
770:X Toolkit Intrinsics
588:X keyboard extension
189:XKB is also used by
152:better treatment of
101:X keyboard extension
17:X keyboard extension
1179:X Window extensions
648:Composite Extension
351:keyboard indicators
262:. For example, the
191:Wayland compositors
18:
1184:Wayland extensions
643:Display PostScript
538:X Window selection
430:X Consortium Inc.
415:X Consortium Inc.
400:X Consortium Inc.
385:X Consortium Inc.
23:Original author(s)
1166:
1165:
1085:
1084:
1081:
1080:
846:
618:X video extension
583:X Image Extension
327:X Input extension
242:XKB defines some
107:is a part of the
93:
92:
1191:
850:
840:
784:Session managers
780:Display managers
753:Client libraries
670:
570:
508:
501:
494:
485:
158:keyboard layouts
121:keyboard layouts
89:
88:
81:
78:
76:
74:
72:
70:
54:
52:
47:
28:X.Org Foundation
19:
1199:
1198:
1194:
1193:
1192:
1190:
1189:
1188:
1169:
1168:
1167:
1162:
1116:
1112:freedesktop.org
1077:
1019:
891:
839:
837:Window managers
831:
782:
774:
748:
674:Display servers
666:implementations
665:
663:
657:
638:Multi-Pointer X
603:Shape extension
571:
562:
548:X11 color names
517:
515:X Window System
512:
449:
382:
358:core protocol's
347:
335:
296:
256:
244:group selectors
232:
203:
148:
141:
109:X Window System
83:
67:
55:
50:
48:
45:
12:
11:
5:
1197:
1195:
1187:
1186:
1181:
1171:
1170:
1164:
1163:
1161:
1160:
1155:
1150:
1145:
1140:
1135:
1130:
1124:
1122:
1118:
1117:
1115:
1114:
1109:
1104:
1099:
1093:
1091:
1087:
1086:
1083:
1082:
1079:
1078:
1076:
1075:
1070:
1065:
1060:
1055:
1050:
1045:
1040:
1035:
1029:
1027:
1021:
1020:
1018:
1017:
1012:
1007:
1002:
997:
992:
987:
982:
977:
972:
967:
962:
957:
952:
947:
942:
937:
932:
927:
922:
917:
912:
907:
901:
899:
893:
892:
890:
889:
884:
879:
874:
869:
864:
858:
856:
847:
833:
832:
830:
829:
824:
819:
814:
809:
804:
799:
794:
788:
786:
776:
775:
773:
772:
767:
762:
756:
754:
750:
749:
747:
746:
741:
736:
731:
726:
721:
716:
711:
706:
701:
696:
691:
686:
678:
676:
667:
659:
658:
656:
655:
650:
645:
640:
635:
630:
625:
620:
615:
610:
605:
600:
595:
590:
585:
579:
577:
573:
572:
565:
563:
561:
560:
555:
553:X Input Method
550:
545:
540:
535:
527:
525:
519:
518:
513:
511:
510:
503:
496:
488:
482:
481:
476:
470:
465:
460:
454:
453:
448:
447:External links
445:
444:
443:
428:
413:
398:
381:
378:
346:
343:
334:
331:
323:
322:
319:
316:
313:
310:
307:
304:
295:
292:
255:
252:
231:
228:
202:
199:
179:
178:
175:
172:
161:
150:
91:
90:
65:
61:
60:
57:
56:
43:
41:
39:Stable release
35:
34:
31:
30:
25:
13:
10:
9:
6:
4:
3:
2:
1196:
1185:
1182:
1180:
1177:
1176:
1174:
1159:
1156:
1154:
1151:
1149:
1146:
1144:
1141:
1139:
1136:
1134:
1131:
1129:
1126:
1125:
1123:
1119:
1113:
1110:
1108:
1105:
1103:
1100:
1098:
1095:
1094:
1092:
1088:
1074:
1071:
1069:
1066:
1064:
1061:
1059:
1056:
1054:
1051:
1049:
1046:
1044:
1041:
1039:
1036:
1034:
1031:
1030:
1028:
1026:
1022:
1016:
1013:
1011:
1008:
1006:
1003:
1001:
998:
996:
993:
991:
988:
986:
983:
981:
978:
976:
973:
971:
968:
966:
963:
961:
958:
956:
953:
951:
948:
946:
943:
941:
938:
936:
933:
931:
928:
926:
923:
921:
918:
916:
913:
911:
908:
906:
903:
902:
900:
898:
894:
888:
887:Enlightenment
885:
883:
880:
878:
875:
873:
870:
868:
865:
863:
860:
859:
857:
855:
851:
848:
844:
838:
834:
828:
825:
823:
820:
818:
815:
813:
810:
808:
805:
803:
800:
798:
795:
793:
790:
789:
787:
785:
781:
777:
771:
768:
766:
763:
761:
758:
757:
755:
751:
745:
742:
740:
737:
735:
732:
730:
727:
725:
722:
720:
717:
715:
712:
710:
707:
705:
702:
700:
697:
695:
692:
690:
687:
685:
684:
680:
679:
677:
675:
671:
668:
660:
654:
651:
649:
646:
644:
641:
639:
636:
634:
631:
629:
626:
624:
621:
619:
616:
614:
611:
609:
606:
604:
601:
599:
596:
594:
591:
589:
586:
584:
581:
580:
578:
574:
569:
559:
556:
554:
551:
549:
546:
544:
541:
539:
536:
534:
533:
532:Core protocol
529:
528:
526:
524:
520:
516:
509:
504:
502:
497:
495:
490:
489:
486:
480:
477:
474:
471:
469:
466:
464:
461:
459:
456:
455:
451:
450:
446:
441:
437:
433:
429:
426:
422:
418:
414:
411:
407:
403:
399:
396:
392:
388:
384:
383:
379:
377:
375:
371:
365:
363:
359:
354:
352:
344:
342:
340:
332:
330:
328:
320:
317:
314:
311:
308:
305:
302:
301:
300:
293:
291:
289:
288:XLookupString
283:
280:
276:
271:
269:
265:
261:
253:
251:
249:
245:
240:
238:
229:
227:
223:
220:
216:
212:
208:
200:
198:
196:
192:
187:
184:
176:
173:
170:
166:
162:
159:
155:
151:
147:
140:
135:
134:
129:
128:
127:
124:
122:
118:
114:
110:
106:
102:
98:
87:
80:
66:
62:
58:
44:1.0 / 1996
42:
40:
36:
32:
29:
26:
24:
20:
1121:Applications
1010:Window Maker
683:X.Org Server
681:
587:
530:
523:Architecture
431:
416:
401:
386:
373:
370:bounding box
366:
361:
360:handling of
355:
348:
336:
324:
297:
287:
284:
279:PerKeyRepeat
278:
272:
267:
263:
259:
257:
247:
243:
241:
236:
233:
224:
210:
206:
204:
188:
180:
153:
131:
125:
104:
100:
94:
854:Compositing
664:and notable
156:(typically
1173:Categories
843:comparison
662:Components
576:Extensions
380:References
230:Key groups
154:key groups
1090:Standards
1053:ratpoison
1005:WindowLab
910:AfterStep
268:MouseKeys
219:Caps Lock
133:modifiers
955:Matchbox
920:Blackbox
897:Stacking
872:Metacity
822:Entrance
744:XWayland
689:Cygwin/X
653:Xinerama
434:(2002).
404:(1996).
389:(1996).
260:controls
254:Controls
149:, etc.);
113:keyboard
1068:StumpWM
1033:awesome
980:Sawfish
970:Openbox
935:Fluxbox
812:LightDM
739:XQuartz
709:XDarwin
704:XFree86
694:X-Win32
558:Wayland
419:(2010)
374:doodads
294:Actions
275:boolean
264:SlowKey
211:latched
64:Website
49: (
1133:xclock
1073:larswm
1063:xmonad
1025:Tiling
877:Mutter
862:Compiz
734:Xephyr
452:On XKB
339:Xephyr
248:groups
207:locked
195:kmscon
167:) and
99:, the
82:
1153:xeyes
1148:xterm
1143:xload
1138:xedit
1128:xcalc
1097:ICCCM
990:tvtwm
950:IceWM
915:amiwm
714:Xming
628:AIGLX
593:RandR
362:bells
345:Other
237:group
215:Shift
169:bells
146:Shift
75:/wiki
1102:EWMH
1058:wmii
1000:vtwm
975:Qvwm
965:olwm
945:FVWM
940:FLWM
925:CTWM
905:4Dwm
882:Xfwm
867:KWin
817:LXDM
802:SDDM
760:Xlib
724:Xsun
719:Xsgi
699:X386
436:HTML
421:HTML
406:HTML
391:HTML
193:and
183:Xlib
165:LEDs
77:/XKB
73:.org
51:1996
1107:XDS
1048:Ion
1038:dwm
1015:wm2
995:twm
985:swm
960:mwm
930:cwm
827:WDM
807:XDM
797:KDM
792:GDM
765:XCB
729:Xgl
633:GLX
440:PDF
425:PDF
410:PDF
395:PDF
209:or
139:Alt
105:XKB
103:or
95:In
69:www
1175::
1043:i3
438:,
423:,
408:,
393:,
341:.
329:.
197:.
160:);
144:⇧
142:,
123:.
71:.x
845:)
841:(
507:e
500:t
493:v
442:.
427:.
412:.
397:.
286:(
171:;
136:(
79:/
53:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.