Debian Package Tracker
Register | Log in
Subscribe

kbd

Linux console font and keytable utilities

Choose email to subscribe with

general
  • source: kbd (main)
  • version: 2.9.0-1
  • maintainer: Console utilities maintainers (archive) (DMD)
  • uploaders: Anton Zinoviev [DMD] – Michael Schutte [DMD]
  • std-ver: 4.1.5
  • VCS: Git (Browse, QA)
versions [more versions can be listed by madison] [old versions available from snapshot.debian.org]
[pool directory]
  • o-o-stable: 2.3.0-3
  • oldstable: 2.5.1-1
  • stable: 2.7.1-2
  • testing: 2.9.0-1
  • unstable: 2.9.0-1
versioned links
  • 2.3.0-3: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.5.1-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.7.1-2: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
  • 2.9.0-1: [.dsc, use dget on this link to retrieve source package] [changelog] [copyright] [rules] [control]
binaries
  • kbd (20 bugs: 0, 7, 13, 0)
  • kbd-udeb
action needed
A new upstream version is available: 2.10.0 high
A new upstream version 2.10.0 is available, you should consider packaging it.
Created: 2026-05-11 Last update: 2026-09-13 07:02
1 security issue in sid high

There is 1 open security issue in sid.

1 important issue:
  • CVE-2026-72693: `openvt -u` is intended to identify the owner of the current VT and then execute `login` as that user from a privileged context. In the documented `kbrequest`/init usage, the ownership test in `authenticate_user()` relies on `stat("/proc/<pid>/fd/0")`. `stat()` on `/proc/<pid>/fd/0` follows the symlink to the underlying TTY device node. As a result, `buf.st_uid` reflects the owner of the TTY node rather than the owner of the process holding the file descriptor. If the TTY owner returns to `root` or the getty owner after logout while an unprivileged process still has `fd 0` attached to that TTY, the check can incorrectly treat that process as belonging to the privileged console owner. Once that check succeeds, the `-u` path executes a passwordless login as the selected user. In the documented `kbrequest`/init deployment using `openvt -us`, this can result in passwordless `login -f root` on the spawned VT. This report establishes that privilege escalation path for that documented deployment; it does not claim equivalent reachability for deployments that do not use `openvt -u` from a privileged `kbrequest`/init path.
Created: 2026-08-12 Last update: 2026-09-04 15:02
1 security issue in forky high

There is 1 open security issue in forky.

1 important issue:
  • CVE-2026-72693: `openvt -u` is intended to identify the owner of the current VT and then execute `login` as that user from a privileged context. In the documented `kbrequest`/init usage, the ownership test in `authenticate_user()` relies on `stat("/proc/<pid>/fd/0")`. `stat()` on `/proc/<pid>/fd/0` follows the symlink to the underlying TTY device node. As a result, `buf.st_uid` reflects the owner of the TTY node rather than the owner of the process holding the file descriptor. If the TTY owner returns to `root` or the getty owner after logout while an unprivileged process still has `fd 0` attached to that TTY, the check can incorrectly treat that process as belonging to the privileged console owner. Once that check succeeds, the `-u` path executes a passwordless login as the selected user. In the documented `kbrequest`/init deployment using `openvt -us`, this can result in passwordless `login -f root` on the spawned VT. This report establishes that privilege escalation path for that documented deployment; it does not claim equivalent reachability for deployments that do not use `openvt -u` from a privileged `kbrequest`/init path.
Created: 2026-08-12 Last update: 2026-09-04 15:02
1 security issue in bullseye high

There is 1 open security issue in bullseye.

1 important issue:
  • CVE-2026-72693: `openvt -u` is intended to identify the owner of the current VT and then execute `login` as that user from a privileged context. In the documented `kbrequest`/init usage, the ownership test in `authenticate_user()` relies on `stat("/proc/<pid>/fd/0")`. `stat()` on `/proc/<pid>/fd/0` follows the symlink to the underlying TTY device node. As a result, `buf.st_uid` reflects the owner of the TTY node rather than the owner of the process holding the file descriptor. If the TTY owner returns to `root` or the getty owner after logout while an unprivileged process still has `fd 0` attached to that TTY, the check can incorrectly treat that process as belonging to the privileged console owner. Once that check succeeds, the `-u` path executes a passwordless login as the selected user. In the documented `kbrequest`/init deployment using `openvt -us`, this can result in passwordless `login -f root` on the spawned VT. This report establishes that privilege escalation path for that documented deployment; it does not claim equivalent reachability for deployments that do not use `openvt -u` from a privileged `kbrequest`/init path.
Created: 2026-08-12 Last update: 2026-08-14 20:30
1 bug tagged help in the BTS normal
The BTS contains 1 bug tagged help, please consider helping the maintainer in dealing with it.
Created: 2019-03-21 Last update: 2026-09-13 07:00
6 bugs tagged patch in the BTS normal
The BTS contains patches fixing 6 bugs, consider including or untagging them.
Created: 2026-09-02 Last update: 2026-09-13 07:00
version in VCS is newer than in repository, is it time to upload? normal
vcswatch reports that this package seems to have a new changelog entry (version 2.10.0-1, distribution UNRELEASED) and new commits in its VCS. You should consider whether it's time to make an upload.

Here are the relevant commit messages:
commit 79c4c484ed3f1f37aae1e8ed0e156e6a11a071ed
Author: Michael Schutte <michi@debian.org>
Date:   Sun Aug 30 15:14:57 2026 +0200

    Recount quilt patches

commit b0c2c3dca196340dfb0cf7dfda012fe5513e8e43
Author: Michael Schutte <michi@debian.org>
Date:   Sun Aug 30 14:59:32 2026 +0200

    Prepare changelog for 2.10.0-1

commit 3581450cf8947b02cf1ec23809daec5439adf135
Merge: b15b473 da7abe1
Author: Michael Schutte <michi@debian.org>
Date:   Sun Aug 30 14:59:08 2026 +0200

    Merge tag 'upstream/2.10.0' into debian/latest
    
    Upstream version 2.10.0

commit da7abe1bc879bcd29777e7f93fcbde1e8235eb4c
Merge: f1caa93 8eff1ed
Author: Michael Schutte <michi@debian.org>
Date:   Sun Aug 30 14:41:41 2026 +0200

    New upstream version 2.10.0

commit 8eff1ed9100ed14e455f5438101037d6320474bd
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun May 24 17:32:42 2026 +0200

    v2.10.0
    
    utils:
    + openvt: make -u process matching more conservative.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 7ca0bf04622a03eb0398ce88a2a94ea438c5d6f3
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun May 24 17:31:34 2026 +0200

    po: Update translations (from translationproject.org)
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 78d5ae119742e87baa7dbe0f5c4107e7533fd698
Author: Alexey Gladkov <legion@kernel.org>
Date:   Tue May 12 10:20:50 2026 +0200

    openvt: make -u process matching more conservative
    
    The -u mode relies on the current VT owner to decide which user should
    be used for the new login session. Make that check stricter by requiring
    a matching process owner and controlling terminal instead of relying on
    the ownership of an inherited file descriptor.
    
    Also reject root as a pre-authenticated target and document the tighter
    behavior in the man page.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 433c3c7f7ec72ddc66860b34b8f0d1f68bd1a184
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat May 9 18:47:28 2026 +0200

    v2.10-rc1
    
    keymaps:
    + Add Backtab keysym and update keymaps to use it for Shift+Tab.
    + Add keymap for Norwegian Apple ISO keyboard.
    + Adjust Swiss German keyboard mappings.
    
    libkeymap:
    + Add API to validate keysyms.
    + Add XKB-aware symbol aliases through the normal synonym tables.
    + Fix compose table upload limit handling.
    
    utils:
    + loadkeys: Add support for generating console keymaps from XKB.
    + loadkeys: Add XKB compose import support.
    + loadkeys: Add support for XKB group switching, modifier handling,
      virtual console switching and keypad/editing remaps.
    + loadkeys: Add diagnostics for XKB keysym coverage.
    
    contrib:
    + Add an XKB keysym coverage diagnostic tool.
    + Add a VT layout indicator using keyboard LED lock triggers.
    
    build:
    + Add a project-level coverage-report target.
    + Keep coverage flags and gcov runtime linking consistent.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 8dbe02cb90976f565edb7bc381f0d41ff0fc4038
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun May 10 12:37:17 2026 +0200

    CI: add packages for xkb tests
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 49ab4915f1220ec029f4e18f7abebe95a4d5618e
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun May 10 11:42:45 2026 +0200

    xkb: fix xkbcommon detection
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit dd838555e69c2bfd37d04f7315b8aee9bff075d6
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat May 9 18:45:54 2026 +0200

    Update gitignore
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 1e8ae79bc6e408a2092fa24b7b11c4d59eb46457
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat May 9 18:44:35 2026 +0200

    fixup! po: Update translations (from translationproject.org)

commit b6d77d6be520d666c666cb5e8df6a4ecdda4f46a
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat May 9 18:30:58 2026 +0200

    build: test fortify redefinition under optimization
    
    Some toolchains, including gentoo configurations, define _FORTIFY_SOURCE
    through compiler specs only when optimization is enabled.
    
    AX_ADD_FORTIFY_SOURCE checked whether _FORTIFY_SOURCE was already
    defined before the project added its normal -O2 flag. That made the
    configure test run in a different mode from the real build: the test saw
    no existing fortify definition and added -D_FORTIFY_SOURCE=3 to
    CPPFLAGS, while the later optimized build also got toolchain-provided
    definition. The result was a repeated warning on every compile:
    
        warning: '_FORTIFY_SOURCE' redefined
    
    Run the probe with -O2 and include a system header so compiler-provided
    fortify is visible during the check. If the toolchain already defines it
    in optimized builds, leave CPPFLAGS unchanged instead of adding another
    definition.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit d1a43f29fd29a783b4b044a77ae5bdc86f8484c4
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat May 9 14:33:28 2026 +0200

    po: Update translations (from translationproject.org)
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 427e682ff3c976517aec58ed04b9af484feefabd
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat May 9 13:45:08 2026 +0200

    tests: fix check without xkb support
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 7719a6e7d81e162d06652eafb3c295043763ba08
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri May 8 18:24:57 2026 +0200

    nls: mark libkbdfile and XKB diagnostics for translation
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 32810105f55a289c80ed77a0b7bb756a73d5791d
Merge: 50e3189 3d56314
Author: Alexey Gladkov <legion@kernel.org>
Date:   Wed May 6 18:18:33 2026 +0200

    Merge branch 'xkb'
    
    Initial support for XKB has been added to loadkeys. The idea is to let
    `loadkeys` build a linux console keymap directly from xkb settings such
    as model, layout, variant and options.
    
    * xkbcommon-v4: (51 commits)
      contrib: add a VT layout indicator driven by keyboard LED locks
      xkbsupport: drop noisy keycode range warning
      libkeymap: clamp compose uploads below MAX_DIACR
      xkbsupport: probe semantic modifier masks across XKB layouts
      tests: stress mixed XKB group semantics in one keymap
      xkbsupport: simplify compose ordering helpers
      tests: cover XKB group select and VT remaps explicitly
      xkbsupport: separate semantic actions from VT approximations
      xkbsupport: derive semantic modifier masks from the compiled XKB map
      tests: add an xkb keyword for xkbsupport coverage
      xkbsupport: document why modifier release stays a final pass
      xkbsupport: stop folding LevelFive into Alt tables
      xkbsupport: ignore prefer-unicode during lexical XKB lookup
      tests: refresh XKB snapshots after Shift semantics fix
      xkbsupport: guard _GNU_SOURCE against redefinition
      xkbsupport: keep Shift release and CapsLock semantics stable
      xkbsupport: canonicalize equivalent masks per XKB level
      contrib: add an XKB keysym coverage diagnostic tool
      xkbsupport: restore semantic handling for Delete keypad aliases
      tests: cover multi-symbol XKB levels and renumber autotest cases
      ...
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 3d56314ce4342cf975978ad2f36c63f8fd81d994
Author: Alexey Gladkov <legion@kernel.org>
Date:   Tue Mar 24 10:43:36 2026 +0100

    contrib: add a VT layout indicator driven by keyboard LED locks
    
    Debugging XKB-derived console layouts is awkward once group switching is
    implemented through the VT lock bits. dumpkeys shows the loaded tables,
    but it does not show which group state is active right now, and probing
    by typing sample letters is slow and error-prone.
    
    Add a small proof-of-concept helper that infers the current layout from
    the kbd-shiftllock and kbd-shiftrlock LED triggers and displays the
    result directly on the active virtual console. The helper auto-detects
    usable LED devices, binds the required triggers, and restores their
    previous settings on exit.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 9de5931e357278ce09623582e423aa970593dd3e
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 23 15:55:08 2026 +0100

    xkbsupport: drop noisy keycode range warning
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 2ff8eac5b6d01b163b0c50f19ae15b3a732c05d5
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 23 15:46:44 2026 +0100

    libkeymap: clamp compose uploads below MAX_DIACR
    
    Both KDSKBDIACR and KDSKBDIACRUC reject counts greater than or equal to
    MAX_DIACR, so hitting the limit still turns an oversized compose table
    into EINVAL instead of loading the largest acceptable prefix.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 9e419a3320e61eca01d5056e42246a7069d674d4
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 23 13:54:33 2026 +0100

    xkbsupport: probe semantic modifier masks across XKB layouts
    
    The semantic modifier mask discovery code assumed that keys such as
    ISO_Level3_Shift would always be visible on layout 0. That is too narrow
    for compiled XKB maps.
    
    Some rulesets expose the effective LevelThree chooser only in another
    group. In that case xkbsupport failed to find the modifier mask at all,
    and later treated reachable third-level symbols as if they had no safe
    kernel-table representation.
    
    libxkbcommon does not expose a direct query for "which real modifier
    mask implements this semantic keysym in the compiled keymap", so derive
    it indirectly by probing candidate keys through xkb_state. Extend that
    probe across all layouts, select the probed layout before pressing the
    key, and keep the simplest resulting mask as the canonical one.
    
    Add a local XKB fixture and a regression test that places the relevant
    LevelThree path in the second group and verifies that third-level
    symbols remain reachable after conversion.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 0b0c26ddb7025251e70c9ec0d6a1e03bc4ec9160
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 22 18:52:48 2026 +0100

    tests: stress mixed XKB group semantics in one keymap
    
    The current XKB coverage checks individual layouts and a few two-group
    combinations well, but it still leaves a gap around mixed multi-group
    maps.
    
    That gap matters because xkbsupport collapses up to four XKB layouts
    into the kernel group tables, and failures there are more likely to show
    up only when very different symbol families and level semantics coexist
    in one import. A regression can keep the simple us,ru cases working
    while still dropping late-group symbols, Cyrillic aliases, polytonic
    Greek levels, or dead-key bindings once the map grows more diverse.
    
    Add a focused four-layout stress test that combines us(altgr-intl),
    ru(srp), gr(polytonic), and de(neo) in one keymap and checks that each
    group still keeps a characteristic binding. This gives xkbsupport a
    targeted regression test for mixed Latin, Cyrillic, Greek, AltGr, and
    dead-key semantics without relying on another large snapshot.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 67ceb3791c54a5b3d9a4948764561946c8d3440b
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 22 13:43:38 2026 +0100

    xkbsupport: simplify compose ordering helpers
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit a2e549aac14fff1f44f4935855f55a8ab8969aa7
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 22 13:35:58 2026 +0100

    tests: cover XKB group select and VT remaps explicitly
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 2388299fec1e6bfd971b9f52639fa38a4836baa5
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 22 13:28:30 2026 +0100

    xkbsupport: separate semantic actions from VT approximations
    
    Not every XKB-only keysym is the same kind of mapping.
    
    Some symbols correspond to direct semantic actions that the kernel
    keymap model can represent reasonably well, such as modifiers, level
    changes, and group switching. Others are already approximations on the
    Linux VT side, such as mapping Delete to Remove, collapsing keypad
    navigation aliases to keypad digits, or turning VT switching symbols
    into Console_* actions.
    
    Keeping both classes in one flat lookup table makes the intent harder to
    review and makes it easier to treat policy decisions as if they were
    plain semantic equivalents.
    
    Split the semantic remap table into direct semantic actions and Linux
    VT-specific approximations, and document why the semantic path is looked
    up first. This keeps the current behavior unchanged while making the
    policy boundary in xkbsupport easier to see.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 03376e26135d37adf241ac6ef3a0fc7d7b8c33bc
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 22 12:26:42 2026 +0100

    xkbsupport: derive semantic modifier masks from the compiled XKB map
    
    The XKB importer still treated several modifier semantics as if they
    were tied to fixed real ModN bits. That is not a safe assumption.
    
    xkb_keymap_key_get_mods_for_level() reports masks in the compiled
    keymap's real modifier encoding, not in a stable semantic namespace.
    The usual xkeyboard-config convention often makes it look as if
    LevelThree means Mod3 and LevelFive means Mod5, but alternate rulesets
    are free to bind those semantics differently. The test XKB data does
    exactly that: LevelThree is reachable through one real modifier bit,
    while LevelFive uses another.
    
    That meant xkbsupport could interpret a correct level mask with the
    wrong kernel meaning. In practice the importer either dropped reachable
    third-level symbols or merged them into the wrong kernel tables because
    it was decoding the mask by hardcoded Mod3/Mod5 expectations instead of
    the compiled keymap's actual modifier bindings.
    
    The failure was visible in the Serbian alias coverage test. The
    ru(srp) layout exposes Serbian letters on the third level, for example:
    
        AD01 level 3 -> U+0458
        AD06 level 3 -> U+045A
        AC08 level 3 -> U+0459
        AC09 level 3 -> U+045F
        AC10 level 3 -> U+0452
        AB02 level 3 -> U+045B
    
    These are expected to land in the same kernel tables that xkbsupport
    uses for XKB third-level access. With the hardcoded Mod3/Mod5 decoding,
    those bindings disappeared from the imported keymap and
    libkeymap-test64 failed with:
    
        Missing keycode 16 in table 8
    
    The same underlying mistake also changed the shape of the exported XKB
    dump snapshots. Once the semantic modifier mask was decoded correctly,
    the converter again emitted the expected third-level Alt/Shift+Alt
    tables, so the stored dump fixtures had to be refreshed as well.
    
    Fix this by deriving semantic modifier masks from the compiled XKB
    keymap itself instead of from fixed ModN names:
    
    - Shift, Lock, and Control still use the named real modifiers.
    - Alt, LevelThree, and LevelFive are resolved from the effective
      modifier state produced by their semantic keys.
    
    This keeps the importer aligned with actual XKB semantics even when a
    ruleset binds LevelThree and LevelFive to unexpected real modifiers, and
    it restores third-level symbol import for layouts such as ru(srp).
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 31e1397e45a33422d2cbb31f68951ba3ee15fa4c
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 23:49:59 2026 +0100

    tests: add an xkb keyword for xkbsupport coverage
    
    The XKB conversion tests are useful as a focused regression set, but
    they could only be selected indirectly through broader libkeymap
    keywords.
    
    Tag the xkbsupport-related tests with a dedicated xkb keyword and
    refresh the XKB dump snapshots to match the current converter output
    after the recent LevelFive handling change.
    
    This makes `make -C tests check CHECK_KEYWORDS='xkb'` a reliable way to
    run the whole XKB import test set without tripping over stale expected
    dumps.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 1a8e82a8654c132dc6841a10d0fe8fb1989f0442
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 23:35:06 2026 +0100

    xkbsupport: document why modifier release stays a final pass
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 10a55ab3d3412cc93f3052c220fe73230d5bd92c
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 23:07:48 2026 +0100

    xkbsupport: stop folding LevelFive into Alt tables
    
    The Linux VT has no separate modifier state for XKB LevelFive.
    
    Mapping Mod5 and LevelFive to Alt makes the converter silently merge
    fifth-level bindings into the Alt tables, which changes the meaning of
    the imported layout instead of reporting that the state cannot be
    represented. A real LevelFive layout can then look valid in the kernel
    dump while producing the wrong bindings.
    
    Treat LevelFive-only masks like the other unsupported XKB modifiers and
    skip them during import. Add a regression test with a local eight-level
    fixture to make sure fifth-level symbols no longer appear as Alt
    bindings.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 2f9b59fea989aa4d18f3dbf5a0fe63615cd7f02c
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 22:48:49 2026 +0100

    xkbsupport: ignore prefer-unicode during lexical XKB lookup
    
    XKB import needs a stable lookup in the kernel key symbol namespace.
    
    Using TO_AUTO for lexical symbol resolution lets LK_FLAG_PREFER_UNICODE
    change how ordinary XKB names are interpreted. That makes the result
    depend on parser mode and can turn shifted Latin bindings back into the
    wrong symbol class, undoing the recent CapsLock and Shift handling fix.
    
    Resolve lexical XKB names explicitly in the 8-bit kernel code space and
    cover that behavior with a regression test that enables
    LK_FLAG_PREFER_UNICODE while importing a normal XKB layout.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit e0ebb800895c3d194747c3d79ccb83da63ff879e
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 22:46:13 2026 +0100

    tests: refresh XKB snapshots after Shift semantics fix
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit f6bc58602d826d37673e38b90467774ac499bc4d
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 19:50:00 2026 +0100

    xkbsupport: guard _GNU_SOURCE against redefinition
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 9d15ac84518e23332a56d9c39954d6ab56cb66c5
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 19:39:58 2026 +0100

    xkbsupport: keep Shift release and CapsLock semantics stable
    
    XKB conversion was generating kernel bindings that looked reasonable in
    a dump, but still did not match how the Linux VT actually resolves key
    state.
    
    For ASCII letters, the lexical lookup path normalized keysyms through
    the Unicode conversion path and could turn an explicit shifted Latin
    symbol into KT_LETTER. That made dumps come out as "+a +A" and let
    CapsLock invert an already-shifted binding. The result was wrong case
    handling for ordinary Latin keys.
    
    Modifier keys had a second problem. The VT resolves key release using
    the current modifier state, so a modifier key must remain bound in the
    tables reachable while it is still active. Leaving pure modifiers
    undefined in those tables turns release into VoidSymbol and makes
    modifiers such as Shift appear to stick.
    
    Switch lexical XKB lookup to a public libkeymap code-space conversion
    API, mark only the non-shifted Latin binding as CapsLock-able, and
    mirror pure modifier bindings into already-allocated tables so key
    release remains visible to the VT state machine.
    
    This keeps Latin keys at "+a A" instead of "+a +A" and prevents Shift,
    Control, and Alt from getting stuck after XKB import.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 0f3fd3c619f514765fac84e12890f6637d806555
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 21 18:22:33 2026 +0100

    xkbsupport: canonicalize equivalent masks per XKB level
    
    Older XKB key types can preserve modifiers while still resolving to the
    same symbol. That makes libxkbcommon report several equivalent modifier
    masks for one level.
    
    The converter used every representable mask it saw. In the kernel keymap
    model those masks compete for the same table slots, so a plain function
    key could claim Ctrl+Alt before the VT switching level was processed.
    With legacy CTRL+ALT types this broke XF86_Switch_VT_* import and moved
    or dropped Console_* bindings.
    
    Pick only the simplest representable mask for each XKB level and treat
    it as the canonical kernel binding. This keeps Ctrl+Alt+Fn on the VT
    switching symbols while leaving the normal function-key levels in their
    own tables.
    
    Add a regression test with a local legacy CTRL+ALT type fixture so the
    old preserve-modifier behaviour stays covered.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit c7a3ffc9df08c68166f86dfa1c6f2693f6819ad2
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 14:39:46 2026 +0100

    contrib: add an XKB keysym coverage diagnostic tool
    
    The XKB import path now relies on a layered resolver with separate
    semantic, lexical, unicode and hex fallbacks, but there is no simple way
    to see which path a given keysym actually takes. That makes cleanup and
    review of xkbsupport changes harder than necessary, especially when a
    refactor shifts symbols between semantic handling and normal libkeymap
    lookup.
    
    Add a small developer tool that scans the libxkbcommon keysym header and
    classifies each explicit keysym according to the current xkbsupport
    resolution path. This gives a quick coverage report for semantic, name,
    unicode, hex and unresolved cases and makes it much easier to spot
    unexpected gaps in the converter without reintroducing a separate XKB
    translation table.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 9b14fcddb45d97107e0b20cab6f408f684136d0e
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 13:59:54 2026 +0100

    xkbsupport: restore semantic handling for Delete keypad aliases
    
    The split between lexical aliases and semantic XKB mappings accidentally
    dropped a few keys that do not have safe direct ksym equivalents in
    libkeymap. That leaves Delete resolving to ASCII DEL instead of the
    kernel's Remove action, and it loses the keypad aliases that XKB uses
    for the center and delete keys when NumLock is off.
    
    Handle Delete, KP_Begin and KP_Delete on the semantic path so the
    converted keymap keeps the expected editing and keypad behavior instead
    of falling back to unrelated lexical names. Extend the multi-symbol XKB
    regression test to cover those cases directly.
    
    Fixes: 8e91af9d ("xkbsupport: keep lexical aliases off the semantic XKB path")
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 62900d0fa9bca8e428768024d8f7b6d5f991e06d
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 13:38:12 2026 +0100

    tests: cover multi-symbol XKB levels and renumber autotest cases
    
    The current XKB fixtures never exercise levels that resolve to more than
    one keysym, even though libxkbcommon supports that case and xkbsupport
    currently handles it by taking the first symbol. Without a dedicated
    test, that behavior is easy to change accidentally and any failure would
    only show up when an unusual keymap reaches users.
    
    Add a focused XKB test layout with multi-symbol levels and verify that
    the converted kernel keymap still comes out usable by keeping the first
    keysym for each affected level.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 8e91af9d4cbeca6dd4606c2f7aeac4fbec32a654
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 13:27:45 2026 +0100

    xkbsupport: keep lexical aliases off the semantic XKB path
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 628370f6006b1ca1b827198c70d72eee0da92ede
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 13:00:41 2026 +0100

    xkbsupport: drop the external XKB names table
    
    The XKB import path no longer needs a separate xkbtrans dictionary to
    translate symbol names before they reach libkeymap. Keeping that extra
    data file and its loader around now only preserves a second resolution
    path, forces the tests to carry explicit table setup, and leaves install
    logic in place for data that is no longer part of the real conversion
    model.
    
    Remove the external translation table and resolve XKB names through the
    normal libkeymap paths only. Keep the remaining digit aliases in the
    synonym layer so Meta_0..9 bindings continue to match the existing
    kernel dumps, and simplify the XKB tests to verify import directly
    without LK_XKB_TRANSLATION_TABLE.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 5f122796ec3ee6ce56de43ec4a070fddafac6e34
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 12:19:06 2026 +0100

    libkeymap: fold Greek XKB symbol remnants into synonyms
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 926f5fe364b8010109253793fdf837d8d95f54b6
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 12:12:49 2026 +0100

    libkeymap: resolve Greek XKB aliases through symbol synonyms
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 07e7b2c2b4dacdf9cfc7e5b585a9c1b3e3b4de5d
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 12:04:42 2026 +0100

    tests: cover Serbian XKB aliases through Unicode fallback
    
    The XKB names table still carried Serbian_* aliases even though the
    current import path can already resolve those symbols from their Unicode
    values. Leaving them in the table hides which translations are still
    needed and makes the remaining legacy mappings harder to justify.
    
    Drop the Serbian_* rows from data/xkbtrans/names and add a regression
    test that removes only those aliases before importing ru(srp). This
    keeps the check focused on the current question and verifies that the
    existing Unicode-based path still produces the expected kernel symbols
    for JE, LJE, NJE, DZE, DJE and TSHE without depending on the external
    translation table.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit a1f2323c50d7609a636941f60c06dd63b2a5a33e
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 11:53:20 2026 +0100

    tests: cover Cyrillic XKB aliases through Unicode fallback
    
    The XKB names table still carried Macedonia_* and Ukrainian_* aliases
    even though those symbols no longer need explicit translation entries to
    reach the kernel keymap. Keeping them in the table makes it harder to
    tell which mappings are still required and which ones already fall
    through the normal unicode-based import path.
    
    Drop those aliases from data/xkbtrans/names and add a regression test
    that removes only the Macedonia_* and Ukrainian_* rows from the
    translation table before importing ru(chu). This verifies that the
    current XKB conversion path still resolves those symbols correctly
    through libxkbcommon unicode decoding and libkeymap's existing Cyrillic
    symbol handling.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 362ececebbf05156f24aeb4a4c5f6120bb721626
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 11:35:04 2026 +0100

    xkbsupport: cut redundant aliases from the XKB names table
    
    The XKB importer still relied on data/xkbtrans/names for several classes
    of symbols whose meaning is already stable enough to resolve directly in
    code. Keeping those entries in the external table makes the import path
    look more data-driven than it really is and leaves the remaining legacy
    aliases harder to distinguish from the mappings that are still required.
    
    Resolve the common semantic keysyms in xkeymap_get_code() first, so
    group selectors, Compose, virtual console switches and keypad decimal
    stop depending on the translation table. With that builtin coverage in
    place, drop the aliases that no longer affect the conversion result,
    including the now-redundant Print mapping.
    
    This shrinks the table toward the legacy XKB-to-kbd mismatches that are
    still genuinely needed, while keeping the current libkeymap XKB tests
    unchanged.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 6842be3b2bb8b28627c73dc9ab152d8ee9725ef0
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 20 11:06:31 2026 +0100

    xkbsupport: resolve common XKB symbols without the names table
    
    The XKB import path still relies on data/xkbtrans/names for many symbols
    that already have stable, well-known semantics in kbd. Keeping those
    lookups in the external table makes the conversion path more fragile
    than it needs to be and leaves the translation file responsible for
    aliases that can be handled directly in code.
    
    Teach xkeymap_get_code() to resolve a small builtin set of common
    non-printing XKB keysyms first, then fall back to direct kbd names, and
    only use unicode or raw name parsing when neither name-based path works.
    This keeps the existing output stable while letting the importer handle
    modifiers, group selectors and keypad navigation aliases without going
    through the translation table.
    
    With those aliases resolved internally, drop the redundant entries from
    data/xkbtrans/names. The remaining table keeps only the legacy mappings
    that are still needed by the current import path.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 1ed93947932f66da5327b470d228b2919a7297e6
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 20:11:15 2026 +0100

    xkbsupport: keep compose import in the kernel's code space
    
    XKB compose import should follow the same conversion rules as the rest of
    kbd.  Appending raw diacritic entries bypasses the normal compose path,
    so the imported table no longer reflects the code space selected for the
    current keymap context and the tests end up validating an ad hoc dump
    format instead of the real library behavior.
    
    Feed imported compose rules through lk_append_compose() and extend the
    internal compose test to catch that conversion path.  Update the XKB
    compose snapshots to use lk_dump_diacs() under preferred-Unicode mode so
    they match the way kbd actually stores and reports compose tables.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 2e9c7ef2de41693ad6a715e5ac14018f075d67f2
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 17:35:22 2026 +0100

    tests: refresh us,ru XKB dump after group fallback fix
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit f4f33737d4dc07ec44c67346a83bd72a9759e9df
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 17:26:36 2026 +0100

    tests: align libkeymap case numbers with test binaries
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit a06b45b67e9ffb03fbed2a94c9d8d149dbc4cac3
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 17:18:33 2026 +0100

    xkbsupport: preserve XKB group fallback per key
    
    A key may define fewer groups than the keymap as a whole while XKB still
    makes that key reachable in later groups by normalizing out-of-range
    group lookups back into range. Restricting the import walk to the groups
    explicitly present on each key drops that fallback and leaves otherwise
    valid multi-layout mappings incomplete in the kernel table.
    
    Walk every global layout when querying a key and let libxkbcommon apply
    its per-key group fallback rules. Add a regression test with a us,empty
    layout pair to verify that a key defined only in the first group remains
    reachable after switching to the second group.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit b98bf6012f435945b88c0b12c1945305aee3748c
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 16:48:10 2026 +0100

    xkbsupport: keep XKB import working without compose data
    
    Missing compose data should not make --xkb-* unusable. The keymap import
    itself is still valid when libxkbcommon cannot resolve a compose table
    for the selected locale, so treating that lookup failure as fatal breaks
    otherwise usable XKB layouts.
    
    Continue without compose support when the locale-specific Compose file
    cannot be found and add a regression test for that fallback. The new
    test forces compose lookup to fail and verifies that XKB import still
    produces a usable kernel keymap without writing to stderr.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit d2a461559bb2890c2b4d0939fb704a741cff9e43
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 11:37:03 2026 +0100

    xkbsupport: drop ad-hoc debug paths now that import is test-covered
    
    The temporary debug output in the XKB conversion path was useful while
    the import logic was still being shaped, but it has become a liability
    now that the behaviour is pinned down by focused unit tests and full
    snapshot coverage.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 9eb0afb442ca519c582c48cad738a78f5ae8327d
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 11:30:47 2026 +0100

    tests: cover XKB import with a non-Latin compose snapshot
    
    The current XKB compose policy is already constrained by kernel limits
    and shaped by Latin dead-key expectations from existing console maps.
    Checking it only against us-intl, Czech and German still leaves too much
    room for regressions that look fine on Latin layouts while quietly
    breaking very different compose behaviour.
    
    Add a Greek XKB snapshot so the import path is exercised on a layout
    with a different alphabet and a different compose model.  This gives the
    tests a way to catch policy changes that accidentally overfit the kernel
    subset to Latin accent handling and miss the behaviour users expect from
    non-Latin XKB layouts.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit b75e5661b386004f2ec2eca4f2c8f4ee5532ebdf
Author: Alexey Gladkov <legion@kernel.org>
Date:   Thu Mar 19 11:14:40 2026 +0100

    xkbsupport: bias compose selection toward console-style dead keys
    
    The kernel compose table is far too small for the locale-wide compose
    space exposed by XKB, so the converter has to choose which rules are
    worth keeping.  Ranking only by generic "dead key + letter" heuristics
    still leaves too much room for incidental XKB data to displace the
    accent combinations users actually expect from established console
    keymaps.
    
    Teach the selector to favour the compact dead-key repertoires that
    traditional console maps and console-setup keep for Latin layouts.  This
    makes the limited kernel compose space track long-standing console
    behaviour more closely, instead of being shaped by whichever extra XKB
    sequences happen to score similarly.
    
    Add a German snapshot alongside the existing XKB compose snapshots so
    the policy is exercised on more than one language and does not quietly
    drift into being Czech-specific.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 50e3189fb21423964d314a5b21b8b0e6017a7e8d
Author: Alexey Gladkov <legion@kernel.org>
Date:   Tue Mar 17 13:41:19 2026 +0100

    tests: catch libkeymap round-trip regressions earlier
    
    libkeymap already has good parser and dump coverage, but it lacked a
    test for the invariant that matters when both sides evolve together:
    a keymap should still describe the same canonical state after
    parse -> dump -> parse.
    
    Add a dedicated round-trip test over representative parser constructs,
    including keymaps ranges, alt_is_meta, strings, compose rules,
    modifiers, +rvalues and a real file-backed keymap. This protects the
    canonical dump format against regressions that would not be caught by
    parser-only or dump-only tests.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 9720d5cf307089a5e62417fcb3835272d258f668
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 16 12:58:32 2026 +0100

    data: Do not compress files twice
    
    Link: https://github.com/legionus/kbd/issues/154
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 07e5b4c71c8ee235cf9b332708e4ac11b30cce54
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 16 18:13:43 2026 +0100

    CI: report library coverage in workflow summaries
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit bc085c0161d309e2b7e42988250d4843c93ca1a5
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 16 17:07:19 2026 +0100

    tests: make expanded library coverage easier to maintain
    
    The recent coverage work left libkeymap, libkbdfile and libkfont with a
    long tail of tiny one-off test binaries. That makes the suites harder to
    navigate, inflates testsuite output with low-signal case names and raises
    the cost of extending coverage further.
    
    Group related checks into a smaller set of logical test programs and
    rename the autotest entries to describe the behavior under test rather
    than historical file numbers. This keeps the extra coverage in place
    without letting the unit suites turn into an unmaintainable list of
    single-purpose executables.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 2bfb5cac1afdcf8832b68fecc80e5962604e8336
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 16 16:34:10 2026 +0100

    tests: libkfont: cover context and kdfontop helpers
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit e575698bfc34a2318a32252b0fbaa83f228efc09
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 16 16:31:36 2026 +0100

    tests: libkeymap: add unit tests for dump and kernel helpers
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 765c70d3259010fe788721f7221e19d16bbf3d40
Author: Alexey Gladkov <legion@kernel.org>
Date:   Mon Mar 16 11:21:50 2026 +0100

    libkfont: add unit tests for psf and console map
    
    Add libkfont unit tests for the PSF reader and writer paths in
    psffontop.c, including PSF1/PSF2 images, unicode sequences and a set
    of malformed input cases.
    
    Also cover console map save/load helpers in mapscrn.c for symbolic,
    binary and failure paths, including direct screen maps, unicode screen
    maps and save failures when no map or no output file is available.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit e2f8cbc04e495ddf1732c3e83e99ac735601bad1
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 15 11:41:02 2026 +0100

    tests: add parser-focused libkeymap unit coverage
    
    libkeymap's parser still had several grammar and semantic corners covered
    only indirectly through full keymap fixtures, which made it harder to
    pin regressions to a specific rule in parser.y.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 31cb1650884910ed00a14eb89969a34b7bc23952
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sun Mar 15 00:02:28 2026 +0100

    build: make coverage-report rebuild and capture reliably
    
    Make coverage-report rebuild the tree before running the tests, reset
    coverage counters explicitly, and restrict capture to the libkbdfile,
    libkeymap, libkfont, and tests subtrees.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit a554b2ec79f5d97e860a29665f15b0c2f776feea
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 23:51:20 2026 +0100

    build: keep coverage flags in target-specific CFLAGS
    
    Make those per-target CFLAGS append to AM_CFLAGS instead of replacing
    it, so coverage-enabled builds stay consistent across the tree.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 77f4d91e25fd22b15ab5583afecb16ab7823b550
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 23:45:35 2026 +0100

    build: add a project-level coverage-report target
    
    Add an official top-level coverage-report target that resets coverage
    counters, runs the test suite, and generates the HTML report in one
    place. Limit capture to the libkbdfile, libkeymap, libkfont, and tests
    subtrees so the report stays focused on the supported unit-test paths,
    and drop genhtml options that are not accepted by the tool version used
    here.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 05a55f6676c6ead0d809aa90415b59bc7a115849
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 23:25:53 2026 +0100

    tests: cover libkeymap string and compose loading
    
    Add focused unit tests for both paths so regressions in string clearing
    and compose table loading can be caught without a real console. This
    extends coverage for lk_load_keymap() beyond key bindings and Unicode
    mode handling.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit ea77b671d12213cd21485a5e2520a77008a40074
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 23:24:39 2026 +0100

    tests: cover libkfont font parsing and screen map loading
    
    Add focused unit tests for reading a minimal PSF1 font image and for
    loading a symbolic console map into a Unicode screen map. This gives the
    suite coverage for the PSF parser and for the code that expands sparse
    screen maps into the default direct-to-font mapping.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 0cfc8e9154c46543554d5f62723953338aa867de
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 23:23:03 2026 +0100

    tests: cover libkbdfile's lazy dlopen helper
    
    libkbdfile's shared-object lookup helper was still uncovered, even
    though it drives the fallback path for optional decompressors.
    
    Add a focused unit test that exercises both the successful symbol lookup
    path and the failure path for a missing symbol. This gives the test
    suite coverage for the lazy loading logic and checks that failed lookups
    do not leave a leaked library handle behind.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 0029aa560f6a79b260012d789d2a4a0d415de996
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 23:00:45 2026 +0100

    build: link coverage-instrumented binaries with gcov runtime flags
    
    Enabling code coverage was compiling objects with gcov instrumentation
    but not reliably carrying the same flags into the final link step.
    
    That leaves references such as __gcov_init unresolved when binaries link
    against static archives like libcommon.a. Propagate the coverage link
    flags through the common build rules and the standalone test makefiles so
    a coverage-enabled build links successfully across the tree.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit dda3280c45d14e1adebafdd8065338c2f7b2fb51
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 14:40:38 2026 +0100

    tests: reduce libkbdfile unit test boilerplate
    
    Factor that common logic into a shared test helper, keep the individual
    scenarios separate, and add short descriptions to every libkbdfile
    autotest case so failures are easier to interpret.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit a48a8f27ecf1c2ca56545481130d91483b7260d2
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:55:51 2026 +0100

    tests: libkeymap: cover lk_load_keymap() aborts on KDSKBENT failures
    
    Key loading must stop as soon as KDSKBENT reports a failure that leaves
    the kernel state unreliable. In particular, permission failures and I/O
    errors should abort the load instead of falling through to function
    string or compose table updates.
    
    Add unit tests that verify lk_load_keymap() stops immediately on EPERM
    and EIO from KDSKBENT and does not continue with later load stages.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit d195b1108d2b5dd41ed7660909d688eb2f8821e5
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:49:41 2026 +0100

    tests: libkeymap: cover Unicode mode switching in lk_load_keymap()
    
    Loading a keymap in Unicode mode depends on temporarily switching the
    kernel keyboard mode before programming keys and restoring the original
    mode afterwards. If the initial mode switch fails, the load must stop
    immediately instead of continuing with a partially applied state.
    
    Add unit tests that verify both sides of this contract: the successful
    Unicode-mode load path and the early failure path when KDSKBMODE
    rejects the switch to K_UNICODE.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 2287db7597e43aa2d7389256fe5fca3c9d3198aa
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:30:21 2026 +0100

    tests: libkeymap: cover lk_load_keymap() fallback for old kernels
    
    Some kernels reject keymap deallocation through KDSKBENT with EINVAL,
    and libkeymap is expected to recover by clearing the table entry by
    entry instead of failing the load.
    
    Add a unit test that exercises this path and verifies that lk_load_keymap()
    keeps going after the deallocation failure by issuing a full manual
    clear.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit bb26c3df2daac31bfbad9192f05fe48addc372ce
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:23:29 2026 +0100

    tests: libkeymap: clarify libkeymap autotest case names
    
    Add short behavior-oriented descriptions to every AT_SETUP entry and
    renumber the later cases so the suite reads consistently from top to
    bottom.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 33b8ea78709c8baa0f13472354968e73f828ae97
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:15:53 2026 +0100

    tests: libkeymap: cover libkeymap kernel keymap loading
    
    This verifies that lk_kernel_keys() imports populated entries, preserves
    holes, and stops scanning tables when the kernel reports K_NOSUCHMAP,
    without requiring a real console device.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 5eaa6a2c6bb2fc72cd61b28f35e9369d337dcdf0
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:09:31 2026 +0100

    tests: libkeymap: add libkeymap coverage for kernel-backed paths
    
    This covers behavior that was previously awkward to exercise without a
    real console, including loading accent tables and function key strings,
    while keeping the checks deterministic and root-free.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit ca49f1e51783b4f76576933219f073a78a069928
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 13:01:20 2026 +0100

    tests: libkeymap: allow unit tests to exercise kernel-dependent paths
    
    Some libkeymap behavior is currently only reachable through ioctls to a
    real console, which leaves important logic covered only by higher-level
    tests and makes failures harder to isolate.
    
    Add an internal way to replace the ioctl backend so kernel-dependent
    code can be tested deterministically in unit tests without changing the
    library's normal runtime behavior.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 827cfea669a0e6de857db9638f5d34bcc153d362
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 12:54:32 2026 +0100

    libkeymap: make kernel-facing code unit-testable
    
    libkeymap still has logic that can only be exercised through ioctls to a
    real console, which makes unit tests awkward and pushes too much
    behavior into root-only integration coverage.
    
    Add an internal seam for the ioctl path so kernel-dependent behavior can
    be tested in isolation while keeping the normal runtime behavior
    unchanged.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 7f705308276e8e877d06d6b00d47c003cbd37d1d
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 12:21:36 2026 +0100

    tests: libkeymap: reduce libkeymap unit test boilerplate
    
    This removes repeated kbdfile/keymap loading code, fixes a broken file
    path in one failure message, and tightens the compose-table test so it
    fails instead of only warning when expected entries are missing or still
    present.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 6e994005d5a52b1fd790d349564dbcc266533dc0
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 12:02:58 2026 +0100

    tests: libkfont: cover libkfont screen map wrappers
    
    Verify that getscrnmap() fills the caller buffer from GIO_SCRNMAP and
    that loadscrnmap() passes the original screen map buffer through to
    PIO_SCRNMAP without modifying it.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit ebac2d1dc7b158f956cf3dae1d4a5c0847c8b575
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:58:32 2026 +0100

    tests: libkfont: cover kfont_put_unicodemap() clear failures
    
    Verify that kfont_put_unicodemap() stops immediately when PIO_UNIMAPCLR
    fails, does not attempt PIO_UNIMAP afterwards, and keeps the
    caller-provided descriptors unchanged.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 7528ba172d71debb4bce7f22e557b190f3992605
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:45:22 2026 +0100

    tests: libkfont: cover kfont_put_unicodemap() retry limit
    
    Verify that kfont_put_unicodemap() stops retrying once advised_hashlevel
    reaches the retry limit, returns an error after repeated ENOMEM
    failures, and keeps the caller-provided descriptors unchanged.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 23f748c49f3c80498b25872b564d74e4b42f7464
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:40:47 2026 +0100

    tests: libkfont: cover kfont_put_unicodemap() ENOMEM retries
    
    Verify that kfont_put_unicodemap() retries PIO_UNIMAP after ENOMEM,
    reissues PIO_UNIMAPCLR with an increased advised_hashlevel, and leaves
    the caller-provided descriptors unchanged.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 4311d70f1f8fef137ef32d60c9eb8014c5cc47c8
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:38:00 2026 +0100

    tests: libkfont: verify kfont_put_uniscrnmap() copies the map
    
    Verify that kfont_put_uniscrnmap() passes a private copy of the screen
    map to the ioctl so kernel-side modifications cannot alter the caller's
    buffer.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 5192e7524c5334cb301ca3359badad9f0d99b56e
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:34:44 2026 +0100

    tests: libkfont: cover tall kfont_put_font() requests
    
    Verify that kfont_put_font() switches to KD_FONT_OP_SET_TALL when the
    font dimensions require a non-default vpitch, forwards the expected
    geometry unchanged, and leaves the caller buffer untouched.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 4f682181f3c7c943d316516ec23feffbf795ccac
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:23:10 2026 +0100

    tests: libkfont: cover kfont_put_font() ENOSYS handling
    
    Verify that kfont_put_font() returns an error without retrying and
    leaves the caller buffer unchanged when the requested font operation is
    not supported.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 4a592dc1c473853ab47810f2f56cdbd874aabe7a
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:18:55 2026 +0100

    tests: libkfont: cover kfont_put_font() retry after EINVAL
    
    Cover the case where the kernel rejects a non-standard 8-bit font count
    with EINVAL and verify that kfont_put_font() retries with a 256-glyph
    buffer, preserves the original glyph data, zero-pads the extra slots,
    and leaves the caller buffer unchanged.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 81639892837e9293d10ceb13d3191dcaeb9a0643
Author: Alexey Gladkov <legion@kernel.org>
Date:   Sat Mar 14 11:09:43 2026 +0100

    tests: libkfont: cover kfont_get_font() fallback and failure paths
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit ebc51c4efd62cd63ba7c6cae30ee51f785556cc4
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 13 19:03:56 2026 +0100

    tests: libkfont: add test for KD_FONT_OP_GET_TALL
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>

commit 6a28bd38d37bf78338f40b0623229ef128e47802
Author: Alexey Gladkov <legion@kernel.org>
Date:   Fri Mar 13 18:54:48 2026 +0100

    tests: libkfont: cover regular kfont_get_font path
    
    Add a libkfont unit test for the successful KDFONTOP get-font path.
    
    Signed-off-by: Alexey Gladkov <legion@kernel.org>


https://salsa.debian.org/api/v4/projects/debian%2Fkbd API request failed: 401 Unauthorized at /srv/qa.debian.org/data/vcswatch/vcswatch line 410.
Created: 2026-09-01 Last update: 2026-09-08 13:31
1 low-priority security issue in trixie low

There is 1 open security issue in trixie.

1 issue left for the package maintainer to handle:
  • CVE-2026-72693: (needs triaging) `openvt -u` is intended to identify the owner of the current VT and then execute `login` as that user from a privileged context. In the documented `kbrequest`/init usage, the ownership test in `authenticate_user()` relies on `stat("/proc/<pid>/fd/0")`. `stat()` on `/proc/<pid>/fd/0` follows the symlink to the underlying TTY device node. As a result, `buf.st_uid` reflects the owner of the TTY node rather than the owner of the process holding the file descriptor. If the TTY owner returns to `root` or the getty owner after logout while an unprivileged process still has `fd 0` attached to that TTY, the check can incorrectly treat that process as belonging to the privileged console owner. Once that check succeeds, the `-u` path executes a passwordless login as the selected user. In the documented `kbrequest`/init deployment using `openvt -us`, this can result in passwordless `login -f root` on the spawned VT. This report establishes that privilege escalation path for that documented deployment; it does not claim equivalent reachability for deployments that do not use `openvt -u` from a privileged `kbrequest`/init path.

You can find information about how to handle this issue in the security team's documentation.

Created: 2026-08-12 Last update: 2026-09-04 15:02
debian/patches: 4 patches to forward upstream low

Among the 4 debian patches available in version 2.9.0-1 of the package, we noticed the following issues:

  • 4 patches where the metadata indicates that the patch has not yet been forwarded upstream. You should either forward the patch upstream or update the metadata to document its real status.
Created: 2023-02-26 Last update: 2025-12-14 21:31
Standards version of the package is outdated. wishlist
The package should be updated to follow the last version of Debian Policy (Standards-Version 4.7.4 instead of 4.1.5).
Created: 2018-08-20 Last update: 2026-03-31 15:01
news
[rss feed]
  • [2025-12-20] kbd 2.9.0-1 MIGRATED to testing (Debian testing watch)
  • [2025-12-14] Accepted kbd 2.9.0-1 (source) into unstable (Andreas Henriksson)
  • [2025-01-11] Accepted kbd 2.7.1-2+exp1 (source) into experimental (Andreas Henriksson)
  • [2024-12-26] kbd 2.7.1-2 MIGRATED to testing (Debian testing watch)
  • [2024-12-20] Accepted kbd 2.7.1-2 (source) into unstable (Andreas Henriksson)
  • [2024-12-20] Accepted kbd 2.7.1-1 (source) into unstable (Andreas Henriksson)
  • [2024-11-18] Accepted kbd 2.7~rc1-1 (source) into experimental (Andreas Henriksson)
  • [2024-09-30] kbd 2.6.4-3 MIGRATED to testing (Debian testing watch)
  • [2024-09-24] Accepted kbd 2.6.4-3 (source) into unstable (Andreas Henriksson)
  • [2024-01-18] kbd 2.6.4-2 MIGRATED to testing (Debian testing watch)
  • [2024-01-12] Accepted kbd 2.6.4-2 (source) into unstable (Andreas Henriksson)
  • [2024-01-09] Accepted kbd 2.6.4-1 (source) into experimental (Andreas Henriksson)
  • [2022-10-14] kbd 2.5.1-1 MIGRATED to testing (Debian testing watch)
  • [2022-10-08] Accepted kbd 2.5.1-1 (source) into unstable (Andreas Henriksson)
  • [2020-10-16] kbd 2.3.0-3 MIGRATED to testing (Debian testing watch)
  • [2020-10-11] Accepted kbd 2.3.0-3 (source) into unstable (Andreas Henriksson)
  • [2020-10-05] kbd 2.3.0-2 MIGRATED to testing (Debian testing watch)
  • [2020-09-29] Accepted kbd 2.3.0-2 (source) into unstable (Andreas Henriksson)
  • [2020-09-29] Accepted kbd 2.3.0-1 (source) into unstable (Andreas Henriksson)
  • [2020-08-21] Accepted kbd 2.2.0-1 (source) into unstable (Andreas Henriksson)
  • [2018-08-03] kbd 2.0.4-4 MIGRATED to testing (Debian testing watch)
  • [2018-07-28] Accepted kbd 2.0.4-4 (source) into unstable (Andreas Henriksson)
  • [2018-06-05] kbd 2.0.4-3 MIGRATED to testing (Debian testing watch)
  • [2018-05-30] Accepted kbd 2.0.4-3 (source) into unstable (Andreas Henriksson)
  • [2017-09-20] kbd 2.0.4-2 MIGRATED to testing (Debian testing watch)
  • [2017-09-15] Accepted kbd 2.0.4-2 (source) into unstable (Andreas Henriksson)
  • [2017-07-16] kbd 2.0.4-1 MIGRATED to testing (Debian testing watch)
  • [2017-07-11] Accepted kbd 2.0.4-1 (source) into unstable (Andreas Henriksson)
  • [2016-01-11] kbd 2.0.3-2 MIGRATED to testing (Debian testing watch)
  • [2016-01-05] Accepted kbd 2.0.3-2 (source amd64) into unstable (Andreas Henriksson)
  • 1
  • 2
bugs [bug history graph]
  • all: 21 22
  • RC: 1
  • I&N: 6 7
  • M&W: 13
  • F&P: 1
  • patch: 6
  • help: 1
links
  • homepage
  • lintian
  • buildd: logs, reproducibility, cross
  • popcon
  • browse source code
  • other distros
  • security tracker
  • l10n (-, 72)
  • debian patches
ubuntu Ubuntu logo [Information about Ubuntu for Debian Developers]
  • version: 2.9.0-1ubuntu1
  • 22 bugs (1 patch)
  • patches for 2.9.0-1ubuntu1

Debian Package Tracker — Copyright 2013-2025 The Distro Tracker Developers
Report problems to the tracker.debian.org pseudo-package in the Debian BTS.
Documentation — Bugs — Git Repository — Contributing