xkb keymap compiler errors / warnings #408

Закрито
7 роки тому відкрито anonymous · 1 коментарів
anonymous прокоментував(ла) 7 роки тому

Wenn ich Neo2 auf einem aktuellen Linux (Fedora 21) laufen lasse, gibt der xkeyboard keymap compiler (xorg-x11-xkb-utils 7.7) folgende Meldungen aus:

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)"
>                   Using last definition for duplicate fields
> Warning:          Multiple interpretations of "Shift_L+AnyOfOrNone(all)"
>                   Using last definition for duplicate fields
> Error:            Key <MDSW> added to map for multiple modifiers
>                   Using Mod3, ignoring Mod5.
> Warning:          Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols
>                   Ignoring extra symbols
> Warning:          Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols
>                   Ignoring extra symbols
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server

Was hat das zu bedeuten? Wie könnte man so was beheben?

Wenn ich Neo2 auf einem aktuellen Linux (Fedora 21) laufen lasse, gibt der xkeyboard keymap compiler (xorg-x11-xkb-utils 7.7) folgende Meldungen aus: ``` The XKEYBOARD keymap compiler (xkbcomp) reports: > Warning: Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)" > Using last definition for duplicate fields > Warning: Multiple interpretations of "Shift_L+AnyOfOrNone(all)" > Using last definition for duplicate fields > Error: Key <MDSW> added to map for multiple modifiers > Using Mod3, ignoring Mod5. > Warning: Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols > Ignoring extra symbols > Warning: Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols > Ignoring extra symbols > Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols > Ignoring extra symbols Errors from xkbcomp are not fatal to the X server ``` Was hat das zu bedeuten? Wie könnte man so was beheben?
anonymous added the
Bug
Treiber/Linux/xkbmap
labels 7 роки тому
hrnz прокоментував(ла) 4 місяці тому
Власник
> Warning:          Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols
>                   Ignoring extra symbols
> Warning:          Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols
>                   Ignoring extra symbols
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols

Dies kann ich nicht reproduzieren, mittlerweile haben diese Tasten 8 Ebenen und Neo lädt die Definitionen aus level5 (Abschnitte lsgt_switch_loc und ähnlich) nach.
Dort werden die Typen dann auch korrekt auf EIGHT_LEVEL gesetzt.

Zum Rest. tl;dr: Imho ist das ein vollkommen irrelevanter Kosmetikfehler, den man getrost ignorieren kann.

Der Grund des Auftretens hängt im Wesentlichen damit zusammen, wie xkbmaps kompiliert werden. Dein System kopiert beim Laden des Tastaturlayouts ahand diverser Regeln verschiedenste Dateien zusammen (es fängt mit Dateien, in denen die Keycodes definiert werden an, geht dann über das Verhalten der Modifier zu dem eigentlichen Tastaturlayout bis zur physischen Geometrie der Tastatur (z.B. für Bildschirmtastaturen oder so).

> Warning:          Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)"
>                   Using last definition for duplicate fields
> Warning:          Multiple interpretations of "Shift_L+AnyOfOrNone(all)"
>                   Using last definition for duplicate fields

Die beiden Warnungen kommen, weil aufgrund bestimmter Regeln der exakt gleiche Code doppelt in die xkbmap kompiliert werden soll. Auf meinem System wird die compat-Sektion der Keymap folgendermaßen populiert: compat: complete+caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)+ledscroll(group_lock) (dies kann man mit setkbmap -v sehen). Das heißt, dass der Inhalt der complete-Datei, die caps_lock-Sektion aus der caps-Datei, die assign_shift_left_action-Sektion aus der misc-Datei usw. eingefügt werden. Die complete-Datei augmentiert selbst aber selbst mit caps(caps_lock) (das heißt, es lädt die Sektion, wenn es keine bereits aktive Option überschreibt`, weshalb der Inhalt dann doppelt vorkommen kann und die erste Warnung geworfen wird. Der Ursprung der zweiten Warnung ist vollkommen analog.

Jetzt fragt man sich natürlich, warum diese Dateien doppelt geladen werden. Das Laden der zusätzlichen Dateien für Neo wird hier definiert, das complete ist schon davor vorhanden, weil eine entsprechende andere Regel matcht. Ich vermute mal, dass das zusätzliche explizite Laden der Dateien nötig ist, weil in bestimmten Randfällen die Augmentierung der für Neo benötigten Optionen in der complete-Datei nicht stattfindet – wenn schon was aktiv war, was damit inkompatibel ist (oder aber es ist ein immer unnötiges historisches Überbleibsel; die entsprechenden Eintrage aus der complete-Datei stammen aus 2005 bzw. 2011).

> Error:            Key <MDSW> added to map for multiple modifiers
>                   Using Mod3, ignoring Mod5.

Der Grund hierfür ist ähnlich, hier wollen die in die symbols-Sektion geladene Dateien pc (wird für so ziemlich jedes Layout geladen, regelt etwa die Navigationstasten und sowas wie ESC) und level5 (das wird von Neo mehr oder weniger explizit geladen) den virtuellen Keycode MDSW als Modifier nutzen wollen, und dann gewinnt das später geladene aus level5 und die Fehlermeldung erscheint. Sie tritt auch mit jedem Layout auf, die was aus level5 lädt (also etwa auch mit de e1, us intl fr bepo und jedes andere bessere Layout).

Ich halte es für nicht sinnvoll oder notwendig, irgendwie versuchen zu verhindern, dass diese Meldungen geworfen werden (mal davon abgesehen schauen uns die xkeyboard-config-Leute vermutlich sehr seltsam an, wenn wir versuchen, große Teile der "gemeinschaftlich genutzen Keymap-Teile" in das Neo-Layout zu kopieren, nur, weil wir nicht wollen, dass der Compiler dann später mal was überschreiben muss).

Wie auch immer, wontfix.

``` > Warning: Type "ONE_LEVEL" has 1 levels, but <LSGT> has 4 symbols > Ignoring extra symbols > Warning: Type "ONE_LEVEL" has 1 levels, but <BKSL> has 2 symbols > Ignoring extra symbols > Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols > Ignoring extra symbols ``` Dies kann ich nicht reproduzieren, mittlerweile haben diese Tasten 8 Ebenen und Neo lädt die Definitionen aus `level5` (Abschnitte `lsgt_switch_loc` und ähnlich) nach. Dort werden die Typen dann auch korrekt auf `EIGHT_LEVEL` gesetzt. Zum Rest. tl;dr: Imho ist das ein vollkommen irrelevanter Kosmetikfehler, den man getrost ignorieren kann. Der Grund des Auftretens hängt im Wesentlichen damit zusammen, wie xkbmaps kompiliert werden. Dein System kopiert beim Laden des Tastaturlayouts ahand diverser Regeln verschiedenste Dateien zusammen (es fängt mit Dateien, in denen die Keycodes definiert werden an, geht dann über das Verhalten der Modifier zu dem eigentlichen Tastaturlayout bis zur physischen Geometrie der Tastatur (z.B. für Bildschirmtastaturen oder so). ``` > Warning: Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)" > Using last definition for duplicate fields > Warning: Multiple interpretations of "Shift_L+AnyOfOrNone(all)" > Using last definition for duplicate fields ``` Die beiden Warnungen kommen, weil aufgrund bestimmter Regeln der exakt gleiche Code doppelt in die xkbmap kompiliert werden soll. Auf meinem System wird die compat-Sektion der Keymap folgendermaßen populiert: `compat: complete+caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)+ledscroll(group_lock)` (dies kann man mit `setkbmap -v` sehen). Das heißt, dass der Inhalt der complete-Datei, die `caps_lock`-Sektion aus der caps-Datei, die `assign_shift_left_action`-Sektion aus der misc-Datei usw. eingefügt werden. Die [complete-Datei](https://github.com/freedesktop/xkeyboard-config/blob/master/compat/complete) augmentiert selbst aber selbst mit `caps(caps_lock)` (das heißt, es lädt die Sektion, wenn es keine bereits aktive Option überschreibt`, weshalb der Inhalt dann doppelt vorkommen kann und die erste Warnung geworfen wird. Der Ursprung der zweiten Warnung ist vollkommen analog. Jetzt fragt man sich natürlich, warum diese Dateien doppelt geladen werden. Das Laden der zusätzlichen Dateien für Neo wird [hier](https://github.com/freedesktop/xkeyboard-config/blob/master/rules/compat/0028-lv_c.part#L2) definiert, das complete ist schon davor vorhanden, weil eine entsprechende andere Regel matcht. Ich vermute mal, dass das zusätzliche explizite Laden der Dateien nötig ist, weil in bestimmten Randfällen die Augmentierung der für Neo benötigten Optionen in der `complete`-Datei nicht stattfindet – wenn schon was aktiv war, was damit inkompatibel ist (oder aber es ist ein immer unnötiges historisches Überbleibsel; die entsprechenden Eintrage aus der complete-Datei stammen aus 2005 bzw. 2011). ``` > Error: Key <MDSW> added to map for multiple modifiers > Using Mod3, ignoring Mod5. ``` Der Grund hierfür ist ähnlich, hier wollen die in die symbols-Sektion geladene Dateien [pc](https://github.com/freedesktop/xkeyboard-config/blob/master/symbols/pc#L44) (wird für so ziemlich jedes Layout geladen, regelt etwa die Navigationstasten und sowas wie ESC) und [level5](https://github.com/freedesktop/xkeyboard-config/blob/master/symbols/level5#L51) (das wird von Neo mehr oder weniger explizit geladen) den virtuellen Keycode MDSW als Modifier nutzen wollen, und dann gewinnt das später geladene aus level5 und die Fehlermeldung erscheint. Sie tritt auch mit jedem Layout auf, die was aus level5 lädt (also etwa auch mit de e1, us intl fr bepo und jedes andere bessere Layout). Ich halte es für nicht sinnvoll oder notwendig, irgendwie versuchen zu verhindern, dass diese Meldungen geworfen werden (mal davon abgesehen schauen uns die xkeyboard-config-Leute vermutlich sehr seltsam an, wenn wir versuchen, große Teile der "gemeinschaftlich genutzen Keymap-Teile" in das Neo-Layout zu kopieren, nur, weil wir nicht wollen, dass der Compiler dann später mal was überschreiben muss). Wie auch immer, wontfix.
hrnz added
wontfix
and removed
Bug
labels 4 місяці тому
hrnz закрив цю проблему 4 місяці тому
Підпишіться щоб приєднатися до обговорення.
Етап відсутній
Немає виконавеця
2 учасників
Сповіщення
Дата завершення

Термін виконання не встановлений.

Залежності

Ця проблема в даний час не має залежностей.

Завантаження…
Тут ще немає жодного змісту.