xkb keymap compiler errors / warnings #408
標籤
未選擇標籤
(╯°□°)╯︵ ┻━┻
Bug
Diskussion
Dokumentation
Duplikat
Gitea
Hardware
Hilfe
Invalid
Java
Lernen
Qt
Remote
Subversion
Tablet
Tastaturbelegung
Test
Treiber/Android
Treiber/iOS
Treiber/Linux/Konsole
Treiber/Linux/xkbmap
Treiber/Linux/xmodmap
Treiber/MacOS
Treiber/Windows/AHK
Treiber/Windows/kbdneo
Treiber/Windows/ReNeo
Verbesserung
Website
Windows 11
Wontfix
Worksforme
未選擇里程碑
沒有負責人
2 參與者
通知
截止日期
未設定截止日期。
先決條件
未設定先決條件。
參考: neo/neo-layout#408
載入中…
新增問題並參考
No description provided.
刪除分支「%!s(<nil>)」
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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:
Was hat das zu bedeuten? Wie könnte man so was beheben?
Dies kann ich nicht reproduzieren, mittlerweile haben diese Tasten 8 Ebenen und Neo lädt die Definitionen aus
level5
(Abschnittelsgt_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).
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 mitsetkbmap -v
sehen). Das heißt, dass der Inhalt der complete-Datei, diecaps_lock
-Sektion aus der caps-Datei, dieassign_shift_left_action
-Sektion aus der misc-Datei usw. eingefügt werden. Die complete-Datei augmentiert selbst aber selbst mitcaps(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).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.