Messages: add new messages to registry
[platform/upstream/libxkbcommon.git] / doc / message-registry.md
1 # Error index {#error-index}
2
3 <!--
4 NOTE: This file has been generated automatically by “update-message-registry.py”.
5       Do not edit manually!
6 -->
7
8 This page lists the warnings and errors generated by xkbcommon.
9 There are currently 52 entries.
10
11 @todo The documentation of the log messages is a work in progress.
12
13 ## Index
14
15 | Code      | Identifier                   | Description | Type |
16 | --------- | ---------------------------- | ----------- | ---- |
17 | [XKB-034] | `malformed-number-literal` | Warn on malformed number literals | Error |
18 | [XKB-043] | `conflicting-key-type-preserve-entries` | Conflicting “preserve” entries in a key type | Warning |
19 | [XKB-060] | `unsupported-modifier-mask` | Warn on unsupported modifier mask | Error |
20 | [XKB-077] | `expected-array-entry` | Expected an array entry, but the index is missing | Error |
21 | [XKB-101] | `illegal-keycode-alias` | Illegal keycode alias with the name of a real key | Warning |
22 | [XKB-107] | `unrecognized-keysym` | Warn on unrecognized keysyms | Warning |
23 | [XKB-123] | `undeclared-virtual-modifier` | A virtual modifier is used before being declared | Error |
24 | [XKB-150] | `wrong-statement-type` | The type of the statement is not allowed in the context | Error |
25 | [XKB-172] | `unsupported-geometry-section` | Geometry sections are not supported | Warning |
26 | [XKB-183] | `cannot-infer-key-type` | Warn if no key type can be inferred | Warning |
27 | [XKB-195] | `illegal-key-type-preserve-result` | The result of a key type “preserve” entry must be a subset of its input modifiers. | Warning |
28 | [XKB-203] | `invalid-include-statement` | Syntax error in the include statement | Error |
29 | [XKB-206] | `invalid-modmap-entry` | A modmap entry is invalid | Error |
30 | [XKB-237] | `unsupported-group-index` | Warn when a group index is not supported | Error |
31 | [XKB-239] | `conflicting-key-type-level-names` | The name of a key type level is defined multiple times. | Warning |
32 | [XKB-254] | `invalid-set-default-statement` | Invalid statement setting default values | Error |
33 | [XKB-266] | `conflicting-key-type-map-entry` | Conflicting “map” entries in type definition | Warning |
34 | [XKB-286] | `undefined-key-type` | Warn if using an undefined key type | Warning |
35 | [XKB-305] | `non-base-group-name` | Warn if a group name was defined for group other than the first one | Warning |
36 | [XKB-312] | `unsupported-shift-level` | Warn when a shift level is not supported | Error |
37 | [XKB-338] | `included-file-not-found` | Could not find a file used in an include statement | Error |
38 | [XKB-345] | `unknown-operator` | Use of an operator that is unknown and thus unsupported | Error |
39 | [XKB-378] | `duplicate-entry` | An entry is duplicated and will be ignored | Warning |
40 | [XKB-407] | `conflicting-key-type-definitions` | Conflicting definitions of a key type | Warning |
41 | [XKB-428] | `wrong-scope` | A statement is in a wrong scope and should be moved | Error |
42 | [XKB-433] | `missing-default-section` | Missing default section in included file | Warning |
43 | [XKB-461] | `conflicting-key-symbol` | Warn if there are conflicting keysyms while merging keys | Warning |
44 | [XKB-478] | `invalid-operation` | The operation is invalid in the context | Error |
45 | [XKB-489] | `numeric-keysym` | Warn on numeric keysym (other than 0-9) | Warning |
46 | [XKB-516] | `extra-symbols-ignored` | <span class="todo">TODO:</span> add description | Warning |
47 | [XKB-523] | `conflicting-key-name` | Conflicting definitions of a key name or alias | Warning |
48 | [XKB-550] | `allocation-error` | Cannot allocate memory | Error |
49 | [XKB-578] | `wrong-field-type` | Warn when a field has not the expected type | Error |
50 | [XKB-623] | `invalid-real-modifier` | Invalid _real_ modifier | Error |
51 | [XKB-645] | `unknown-char-escape-sequence` | Warn on unknown escape sequence in string literal | Warning |
52 | [XKB-661] | `invalid-included-file` | The target file of an include statement could not be processed | Error |
53 | [XKB-700] | `multiple-groups-at-once` | Warn if a key defines multiple groups at once | Warning |
54 | [XKB-711] | `unsupported-symbols-field` | A legacy X11 symbol field is not supported | Warning |
55 | [XKB-769] | `invalid-syntax` | The syntax is invalid and the file cannot be parsed | Error |
56 | [XKB-770] | `undefined-keycode` | Reference to an undefined keycode | Warning |
57 | [XKB-784] | `invalid-expression-type` | An expression has not the expected type | Error |
58 | [XKB-796] | `invalid-value` | A value is invalid and will be ignored | Error |
59 | [XKB-800] | `conflicting-modmap` | Warn if there are conflicting modmap definitions | Warning |
60 | [XKB-812] | `unknown-field` | A field is unknown and will be ignored | Error |
61 | [XKB-883] | `conflicting-key-action` | Warn if there are conflicting actions while merging keys | Warning |
62 | [XKB-893] | `conflicting-key-type-merging-groups` | Warn if there are conflicting key types while merging groups | Warning |
63 | [XKB-901] | `conflicting-key-symbols-entry` | Conflicting symbols entry for a key | Error |
64 | [XKB-903] | `missing-symbols-group-name-index` | Missing group index in a group name entry | Warning |
65 | [XKB-935] | `conflicting-key-fields` | Warn if there are conflicting fields while merging keys | Warning |
66 | [XKB-949] | `invalid-identifier` | An identifier is used but is not built-in | Error |
67 | [XKB-965] | `unresolved-keymap-symbol` | Warn if using a symbol not defined in the keymap | Warning |
68 | [XKB-971] | `undeclared-modifiers-in-key-type` | Some modifiers used in a key type “map” or “preserve” entry are not declared | Warning |
69
70 ## Details
71
72 ### XKB-034 – Malformed number literal {#XKB-034}
73
74 <dl>
75   <dt>Since</dt><dd>1.0.0</dd>
76   <dt>Type</dt><dd>Error</dd>
77   <dt>Summary</dt><dd>Warn on malformed number literals</dd>
78 </dl>
79
80 xkbcommon can parse the following number literal formats:
81
82 - *decimal integer:* 1, 123, etc.
83 - *decimal floating-point number:* 1.23, etc.
84 - *hexadecimal integer:* prefixed with “0x”: 0x123, 0xff, 0xAB, etc.
85
86
87 ### XKB-043 – Conflicting key type preserve entries {#XKB-043}
88
89 <dl>
90   <dt>Since</dt><dd>1.0.0</dd>
91   <dt>Type</dt><dd>Warning</dd>
92   <dt>Summary</dt><dd>Conflicting “preserve” entries in a key type</dd>
93 </dl>
94
95 ### XKB-060 – Unsupported modifier mask {#XKB-060}
96
97 <dl>
98   <dt>Since</dt><dd>1.0.0</dd>
99   <dt>Type</dt><dd>Error</dd>
100   <dt>Summary</dt><dd>Warn on unsupported modifier mask</dd>
101 </dl>
102
103 ### XKB-077 – Expected array entry {#XKB-077}
104
105 <dl>
106   <dt>Since</dt><dd>1.0.0</dd>
107   <dt>Type</dt><dd>Error</dd>
108   <dt>Summary</dt><dd>Expected an array entry, but the index is missing</dd>
109 </dl>
110
111 ### XKB-101 – Illegal keycode alias {#XKB-101}
112
113 <dl>
114   <dt>Since</dt><dd>1.0.0</dd>
115   <dt>Type</dt><dd>Warning</dd>
116   <dt>Summary</dt><dd>Illegal keycode alias with the name of a real key</dd>
117 </dl>
118
119 ### XKB-107 – Unrecognized keysym {#XKB-107}
120
121 <dl>
122   <dt>Since</dt><dd>1.0.0</dd>
123   <dt>Type</dt><dd>Warning</dd>
124   <dt>Summary</dt><dd>Warn on unrecognized keysyms</dd>
125 </dl>
126
127 xkbcommon replaces keysyms it does not recognize by the keysym `NoSymbol`.
128
129 You may find the list of supported keysyms in
130 `include/xkbcommon/xkbcommon-keysyms.h`.
131
132
133 #### Examples
134
135 <details>
136   <summary>Unrecognized keysym “`coma`”</summary>
137
138 **Error message:**
139
140 ```
141 xkbcommon: WARNING: [XKB-107] de:31:20: unrecognized keysym "coma"
142 ```
143
144 xkbcommon does not recognize the keysym “`coma`”. It is most probably
145 a typo for “<code>com<em>m</em>a</code>”.
146 See: `XKB_KEY_comma` in `include/xkbcommon/xkbcommon-keysyms.h`.
147
148 **Fix:**
149   <div class="example-container">
150     <div class="example">
151       <div class="example-inner">
152         <div class="example-title">Before</div>
153 ```c
154 key <AB08> {[ coma, semicolon, periodcentered, multiply ]};
155 ```
156 </div>
157     </div>
158     <div class="example">
159       <div class="example-inner">
160         <div class="example-title">After</div>
161 ```c
162 key <AB08> {[ comma, semicolon, periodcentered, multiply ]};
163 ```
164 </div>
165     </div>
166   </div>
167 </details>
168
169 ### XKB-123 – Undeclared virtual modifier {#XKB-123}
170
171 <dl>
172   <dt>Since</dt><dd>1.0.0</dd>
173   <dt>Type</dt><dd>Error</dd>
174   <dt>Summary</dt><dd>A virtual modifier is used before being declared</dd>
175 </dl>
176
177 ### XKB-150 – Wrong statement type {#XKB-150}
178
179 <dl>
180   <dt>Since</dt><dd>1.0.0</dd>
181   <dt>Type</dt><dd>Error</dd>
182   <dt>Summary</dt><dd>The type of the statement is not allowed in the context</dd>
183 </dl>
184
185 ### XKB-172 – Unsupported geometry section {#XKB-172}
186
187 <dl>
188   <dt>Since</dt><dd>1.0.0</dd>
189   <dt>Type</dt><dd>Warning</dd>
190   <dt>Summary</dt><dd>Geometry sections are not supported</dd>
191 </dl>
192
193 ### XKB-183 – Cannot infer key type {#XKB-183}
194
195 <dl>
196   <dt>Since</dt><dd>1.0.0</dd>
197   <dt>Type</dt><dd>Warning</dd>
198   <dt>Summary</dt><dd>Warn if no key type can be inferred</dd>
199 </dl>
200
201 ### XKB-195 – Illegal key type preserve result {#XKB-195}
202
203 <dl>
204   <dt>Since</dt><dd>1.0.0</dd>
205   <dt>Type</dt><dd>Warning</dd>
206   <dt>Summary</dt><dd>The result of a key type “preserve” entry must be a subset of its input modifiers.</dd>
207 </dl>
208
209 ### XKB-203 – Invalid include statement {#XKB-203}
210
211 <dl>
212   <dt>Since</dt><dd>1.0.0</dd>
213   <dt>Type</dt><dd>Error</dd>
214   <dt>Summary</dt><dd>Syntax error in the include statement</dd>
215 </dl>
216
217 ### XKB-206 – Invalid modmap entry {#XKB-206}
218
219 <dl>
220   <dt>Since</dt><dd>1.0.0</dd>
221   <dt>Type</dt><dd>Error</dd>
222   <dt>Summary</dt><dd>A modmap entry is invalid</dd>
223 </dl>
224
225 ### XKB-237 – Unsupported group index {#XKB-237}
226
227 <dl>
228   <dt>Since</dt><dd>1.0.0</dd>
229   <dt>Type</dt><dd>Error</dd>
230   <dt>Summary</dt><dd>Warn when a group index is not supported</dd>
231 </dl>
232
233 xkbcommon supports group index in the range (1..4).
234
235
236 ### XKB-239 – Conflicting key type level names {#XKB-239}
237
238 <dl>
239   <dt>Since</dt><dd>1.0.0</dd>
240   <dt>Type</dt><dd>Warning</dd>
241   <dt>Summary</dt><dd>The name of a key type level is defined multiple times.</dd>
242 </dl>
243
244 ### XKB-254 – Invalid set default statement {#XKB-254}
245
246 <dl>
247   <dt>Since</dt><dd>1.0.0</dd>
248   <dt>Type</dt><dd>Error</dd>
249   <dt>Summary</dt><dd>Invalid statement setting default values</dd>
250 </dl>
251
252 ### XKB-266 – Conflicting key type map entry {#XKB-266}
253
254 <dl>
255   <dt>Since</dt><dd>1.0.0</dd>
256   <dt>Type</dt><dd>Warning</dd>
257   <dt>Summary</dt><dd>Conflicting “map” entries in type definition</dd>
258 </dl>
259
260 ### XKB-286 – Undefined key type {#XKB-286}
261
262 <dl>
263   <dt>Since</dt><dd>1.0.0</dd>
264   <dt>Type</dt><dd>Warning</dd>
265   <dt>Summary</dt><dd>Warn if using an undefined key type</dd>
266 </dl>
267
268 ### XKB-305 – Non base group name {#XKB-305}
269
270 <dl>
271   <dt>Since</dt><dd>1.0.0</dd>
272   <dt>Type</dt><dd>Warning</dd>
273   <dt>Summary</dt><dd>Warn if a group name was defined for group other than the first one</dd>
274 </dl>
275
276 ### XKB-312 – Unsupported shift level {#XKB-312}
277
278 <dl>
279   <dt>Since</dt><dd>1.0.0</dd>
280   <dt>Type</dt><dd>Error</dd>
281   <dt>Summary</dt><dd>Warn when a shift level is not supported</dd>
282 </dl>
283
284 Shift levels are _one_-indexed. xkbcommon supports two formats of shift levels:
285 as numbers and as identifiers `LevelN`, where `N` is in the range (1..8).
286
287
288 ### XKB-338 – Included file not found {#XKB-338}
289
290 <dl>
291   <dt>Since</dt><dd>1.0.0</dd>
292   <dt>Type</dt><dd>Error</dd>
293   <dt>Summary</dt><dd>Could not find a file used in an include statement</dd>
294 </dl>
295
296 ### XKB-345 – Unknown operator {#XKB-345}
297
298 <dl>
299   <dt>Since</dt><dd>1.0.0</dd>
300   <dt>Type</dt><dd>Error</dd>
301   <dt>Summary</dt><dd>Use of an operator that is unknown and thus unsupported</dd>
302 </dl>
303
304 ### XKB-378 – Duplicate entry {#XKB-378}
305
306 <dl>
307   <dt>Since</dt><dd>1.0.0</dd>
308   <dt>Type</dt><dd>Warning</dd>
309   <dt>Summary</dt><dd>An entry is duplicated and will be ignored</dd>
310 </dl>
311
312 ### XKB-407 – Conflicting key type definitions {#XKB-407}
313
314 <dl>
315   <dt>Since</dt><dd>1.0.0</dd>
316   <dt>Type</dt><dd>Warning</dd>
317   <dt>Summary</dt><dd>Conflicting definitions of a key type</dd>
318 </dl>
319
320 The given key type is defined multiple times, but only one definition is kept.
321
322
323 ### XKB-428 – Wrong scope {#XKB-428}
324
325 <dl>
326   <dt>Since</dt><dd>1.0.0</dd>
327   <dt>Type</dt><dd>Error</dd>
328   <dt>Summary</dt><dd>A statement is in a wrong scope and should be moved</dd>
329 </dl>
330
331 ### XKB-433 – Missing default section {#XKB-433}
332
333 <dl>
334   <dt>Since</dt><dd>1.0.0</dd>
335   <dt>Type</dt><dd>Warning</dd>
336   <dt>Summary</dt><dd>Missing default section in included file</dd>
337 </dl>
338
339 When using an include statement, the included file may contains multiple sections.
340 The include statement may specify the name of the section to include, or leave it
341 unspecified. In the latter case, the included file must then define a *default* section.
342 The present warning is shown when no default section is defined.
343
344 To solve this, either fix the include statement by specifying the exact section to
345 include, or declare a default section in the included file.
346
347
348 ### XKB-461 – Conflicting key symbol {#XKB-461}
349
350 <dl>
351   <dt>Since</dt><dd>1.0.0</dd>
352   <dt>Type</dt><dd>Warning</dd>
353   <dt>Summary</dt><dd>Warn if there are conflicting keysyms while merging keys</dd>
354 </dl>
355
356 ### XKB-478 – Invalid operation {#XKB-478}
357
358 <dl>
359   <dt>Since</dt><dd>1.0.0</dd>
360   <dt>Type</dt><dd>Error</dd>
361   <dt>Summary</dt><dd>The operation is invalid in the context</dd>
362 </dl>
363
364 ### XKB-489 – Numeric keysym {#XKB-489}
365
366 <dl>
367   <dt>Since</dt><dd>1.6.0</dd>
368   <dt>Type</dt><dd>Warning</dd>
369   <dt>Summary</dt><dd>Warn on numeric keysym (other than 0-9)</dd>
370 </dl>
371
372 Numeric keysyms are not human-friendly. Use the corresponding named keysym
373 or Unicode keysym, if available.
374
375
376 #### Examples
377
378 <details>
379   <summary>Hexadecimal keysym `0x1001ed0`</summary>
380
381 **Error message:**
382
383 ```
384 xkbcommon: WARNING: [XKB-489] numeric keysym "0x1001ed0"
385 ```
386
387 **Fix:**
388   <div class="example-container">
389     <div class="example">
390       <div class="example-inner">
391         <div class="example-title">Before</div>
392 ```c
393 key <AE01> { [ 0x1001ed0] };
394 ```
395 </div>
396     </div>
397     <div class="example">
398       <div class="example-inner">
399         <div class="example-title">After</div>
400 ```c
401 // Preferred form: human-friendly
402 key <AE01> { [ Ocircumflexacute ] };
403 // or
404 key <AE01> { [ U1ED0 ] };
405 ```
406 </div>
407     </div>
408   </div>
409 </details>
410
411 ### XKB-516 – Extra symbols ignored {#XKB-516}
412
413 <dl>
414   <dt>Since</dt><dd>1.0.0</dd>
415   <dt>Type</dt><dd>Warning</dd>
416   <dt>Summary</dt><dd><span class="todo">TODO:</span> add description</dd>
417 </dl>
418
419 ### XKB-523 – Conflicting key name {#XKB-523}
420
421 <dl>
422   <dt>Since</dt><dd>1.0.0</dd>
423   <dt>Type</dt><dd>Warning</dd>
424   <dt>Summary</dt><dd>Conflicting definitions of a key name or alias</dd>
425 </dl>
426
427 ### XKB-550 – Allocation error {#XKB-550}
428
429 <dl>
430   <dt>Since</dt><dd>1.0.0</dd>
431   <dt>Type</dt><dd>Error</dd>
432   <dt>Summary</dt><dd>Cannot allocate memory</dd>
433 </dl>
434
435 ### XKB-578 – Wrong field type {#XKB-578}
436
437 <dl>
438   <dt>Since</dt><dd>1.0.0</dd>
439   <dt>Type</dt><dd>Error</dd>
440   <dt>Summary</dt><dd>Warn when a field has not the expected type</dd>
441 </dl>
442
443 ### XKB-623 – Invalid real modifier {#XKB-623}
444
445 <dl>
446   <dt>Since</dt><dd>1.0.0</dd>
447   <dt>Type</dt><dd>Error</dd>
448   <dt>Summary</dt><dd>Invalid _real_ modifier</dd>
449 </dl>
450
451 ### XKB-645 – Unknown char escape sequence {#XKB-645}
452
453 <dl>
454   <dt>Since</dt><dd>1.0.0</dd>
455   <dt>Type</dt><dd>Warning</dd>
456   <dt>Summary</dt><dd>Warn on unknown escape sequence in string literal</dd>
457 </dl>
458
459 xkbcommon support the following escape sequences in string literals:
460
461 | Escape sequence | Corresponding character             |
462 | --------------- | ----------------------------------- |
463 | `\b`            | `U+0008` Backspace                  |
464 | `\t`            | `U+0009` Character tabulation       |
465 | `\n`            | `U+000A` Line feed                  |
466 | `\v`            | `U+000B` Vertical tabulation        |
467 | `\f`            | `U+000C` Form feed                  |
468 | `\r`            | `U+000D` Carriage return            |
469 | `\e`            | `U+001B` Escape                     |
470 | `\\`            | `U+005C` Backslash                  |
471 | `\NNN`          | _Octal_ escape, from `\0` to `\777` |
472
473
474 ### XKB-661 – Invalid included file {#XKB-661}
475
476 <dl>
477   <dt>Since</dt><dd>1.0.0</dd>
478   <dt>Type</dt><dd>Error</dd>
479   <dt>Summary</dt><dd>The target file of an include statement could not be processed</dd>
480 </dl>
481
482 ### XKB-700 – Multiple groups at once {#XKB-700}
483
484 <dl>
485   <dt>Since</dt><dd>1.0.0</dd>
486   <dt>Type</dt><dd>Warning</dd>
487   <dt>Summary</dt><dd>Warn if a key defines multiple groups at once</dd>
488 </dl>
489
490 ### XKB-711 – Unsupported symbols field {#XKB-711}
491
492 <dl>
493   <dt>Since</dt><dd>1.0.0</dd>
494   <dt>Type</dt><dd>Warning</dd>
495   <dt>Summary</dt><dd>A legacy X11 symbol field is not supported</dd>
496 </dl>
497
498 ### XKB-769 – Invalid syntax {#XKB-769}
499
500 <dl>
501   <dt>Since</dt><dd>1.0.0</dd>
502   <dt>Type</dt><dd>Error</dd>
503   <dt>Summary</dt><dd>The syntax is invalid and the file cannot be parsed</dd>
504 </dl>
505
506 ### XKB-770 – Undefined keycode {#XKB-770}
507
508 <dl>
509   <dt>Since</dt><dd>1.0.0</dd>
510   <dt>Type</dt><dd>Warning</dd>
511   <dt>Summary</dt><dd>Reference to an undefined keycode</dd>
512 </dl>
513
514 ### XKB-784 – Invalid expression type {#XKB-784}
515
516 <dl>
517   <dt>Since</dt><dd>1.0.0</dd>
518   <dt>Type</dt><dd>Error</dd>
519   <dt>Summary</dt><dd>An expression has not the expected type</dd>
520 </dl>
521
522 ### XKB-796 – Invalid value {#XKB-796}
523
524 <dl>
525   <dt>Since</dt><dd>1.0.0</dd>
526   <dt>Type</dt><dd>Error</dd>
527   <dt>Summary</dt><dd>A value is invalid and will be ignored</dd>
528 </dl>
529
530 ### XKB-800 – Conflicting modmap {#XKB-800}
531
532 <dl>
533   <dt>Since</dt><dd>1.0.0</dd>
534   <dt>Type</dt><dd>Warning</dd>
535   <dt>Summary</dt><dd>Warn if there are conflicting modmap definitions</dd>
536 </dl>
537
538 @todo detailed explanation and examples
539
540
541 ### XKB-812 – Unknown field {#XKB-812}
542
543 <dl>
544   <dt>Since</dt><dd>1.0.0</dd>
545   <dt>Type</dt><dd>Error</dd>
546   <dt>Summary</dt><dd>A field is unknown and will be ignored</dd>
547 </dl>
548
549 ### XKB-883 – Conflicting key action {#XKB-883}
550
551 <dl>
552   <dt>Since</dt><dd>1.0.0</dd>
553   <dt>Type</dt><dd>Warning</dd>
554   <dt>Summary</dt><dd>Warn if there are conflicting actions while merging keys</dd>
555 </dl>
556
557 ### XKB-893 – Conflicting key type merging groups {#XKB-893}
558
559 <dl>
560   <dt>Since</dt><dd>1.0.0</dd>
561   <dt>Type</dt><dd>Warning</dd>
562   <dt>Summary</dt><dd>Warn if there are conflicting key types while merging groups</dd>
563 </dl>
564
565 ### XKB-901 – Conflicting key symbols entry {#XKB-901}
566
567 <dl>
568   <dt>Since</dt><dd>1.0.0</dd>
569   <dt>Type</dt><dd>Error</dd>
570   <dt>Summary</dt><dd>Conflicting symbols entry for a key</dd>
571 </dl>
572
573 ### XKB-903 – Missing symbols group name index {#XKB-903}
574
575 <dl>
576   <dt>Since</dt><dd>1.0.0</dd>
577   <dt>Type</dt><dd>Warning</dd>
578   <dt>Summary</dt><dd>Missing group index in a group name entry</dd>
579 </dl>
580
581 ### XKB-935 – Conflicting key fields {#XKB-935}
582
583 <dl>
584   <dt>Since</dt><dd>1.0.0</dd>
585   <dt>Type</dt><dd>Warning</dd>
586   <dt>Summary</dt><dd>Warn if there are conflicting fields while merging keys</dd>
587 </dl>
588
589 ### XKB-949 – Invalid identifier {#XKB-949}
590
591 <dl>
592   <dt>Since</dt><dd>1.0.0</dd>
593   <dt>Type</dt><dd>Error</dd>
594   <dt>Summary</dt><dd>An identifier is used but is not built-in</dd>
595 </dl>
596
597 ### XKB-965 – Unresolved keymap symbol {#XKB-965}
598
599 <dl>
600   <dt>Since</dt><dd>1.0.0</dd>
601   <dt>Type</dt><dd>Warning</dd>
602   <dt>Summary</dt><dd>Warn if using a symbol not defined in the keymap</dd>
603 </dl>
604
605 ### XKB-971 – Undeclared modifiers in key type {#XKB-971}
606
607 <dl>
608   <dt>Since</dt><dd>1.0.0</dd>
609   <dt>Type</dt><dd>Warning</dd>
610   <dt>Summary</dt><dd>Some modifiers used in a key type “map” or “preserve” entry are not declared</dd>
611 </dl>
612
613 The modifiers used in `map` or `preserve` entries should be declared using the entry
614 `modifiers` in the key type.
615
616
617 [XKB-034]: @ref XKB-034
618 [XKB-043]: @ref XKB-043
619 [XKB-060]: @ref XKB-060
620 [XKB-077]: @ref XKB-077
621 [XKB-101]: @ref XKB-101
622 [XKB-107]: @ref XKB-107
623 [XKB-123]: @ref XKB-123
624 [XKB-150]: @ref XKB-150
625 [XKB-172]: @ref XKB-172
626 [XKB-183]: @ref XKB-183
627 [XKB-195]: @ref XKB-195
628 [XKB-203]: @ref XKB-203
629 [XKB-206]: @ref XKB-206
630 [XKB-237]: @ref XKB-237
631 [XKB-239]: @ref XKB-239
632 [XKB-254]: @ref XKB-254
633 [XKB-266]: @ref XKB-266
634 [XKB-286]: @ref XKB-286
635 [XKB-305]: @ref XKB-305
636 [XKB-312]: @ref XKB-312
637 [XKB-338]: @ref XKB-338
638 [XKB-345]: @ref XKB-345
639 [XKB-378]: @ref XKB-378
640 [XKB-407]: @ref XKB-407
641 [XKB-428]: @ref XKB-428
642 [XKB-433]: @ref XKB-433
643 [XKB-461]: @ref XKB-461
644 [XKB-478]: @ref XKB-478
645 [XKB-489]: @ref XKB-489
646 [XKB-516]: @ref XKB-516
647 [XKB-523]: @ref XKB-523
648 [XKB-550]: @ref XKB-550
649 [XKB-578]: @ref XKB-578
650 [XKB-623]: @ref XKB-623
651 [XKB-645]: @ref XKB-645
652 [XKB-661]: @ref XKB-661
653 [XKB-700]: @ref XKB-700
654 [XKB-711]: @ref XKB-711
655 [XKB-769]: @ref XKB-769
656 [XKB-770]: @ref XKB-770
657 [XKB-784]: @ref XKB-784
658 [XKB-796]: @ref XKB-796
659 [XKB-800]: @ref XKB-800
660 [XKB-812]: @ref XKB-812
661 [XKB-883]: @ref XKB-883
662 [XKB-893]: @ref XKB-893
663 [XKB-901]: @ref XKB-901
664 [XKB-903]: @ref XKB-903
665 [XKB-935]: @ref XKB-935
666 [XKB-949]: @ref XKB-949
667 [XKB-965]: @ref XKB-965
668 [XKB-971]: @ref XKB-971