{"id":13420518,"url":"https://github.com/xkbcommon/libxkbcommon","last_synced_at":"2025-10-20T16:16:04.878Z","repository":{"id":1150094,"uuid":"9152006","full_name":"xkbcommon/libxkbcommon","owner":"xkbcommon","description":"keymap handling library for toolkits and window systems","archived":false,"fork":false,"pushed_at":"2025-10-17T14:47:43.000Z","size":9029,"stargazers_count":321,"open_issues_count":49,"forks_count":135,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-10-18T17:24:57.154Z","etag":null,"topics":["keyboard","keyboard-layout","keymap","wayland","x11","xkb","xkbcommon"],"latest_commit_sha":null,"homepage":"https://xkbcommon.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xkbcommon.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-04-01T17:31:10.000Z","updated_at":"2025-10-17T14:47:07.000Z","dependencies_parsed_at":"2023-01-13T10:58:34.959Z","dependency_job_id":"fe9051f8-6346-43fe-a4cd-a74d72101f6b","html_url":"https://github.com/xkbcommon/libxkbcommon","commit_stats":{"total_commits":2092,"total_committers":63,"mean_commits":33.20634920634921,"dds":0.4474187380497132,"last_synced_commit":"003fdee1378382d4fef77089f5f4652cd2422c6a"},"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/xkbcommon/libxkbcommon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkbcommon%2Flibxkbcommon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkbcommon%2Flibxkbcommon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkbcommon%2Flibxkbcommon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkbcommon%2Flibxkbcommon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xkbcommon","download_url":"https://codeload.github.com/xkbcommon/libxkbcommon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkbcommon%2Flibxkbcommon/sbom","scorecard":{"id":1237749,"data":{"date":"2025-07-07","repo":{"name":"github.com/xkbcommon/libxkbcommon","commit":"dc63e5f827f6d4cc449c8e618ae267729134ad47"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":5.8,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 1/18 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/github-release.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/linux.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/macos.yml:16","Info: jobLevel 'contents' permission set to 'read': .github/workflows/windows.yml:16","Info: found token with 'none' permissions: .github/workflows/github-release.yml:1","Info: found token with 'none' permissions: .github/workflows/linux.yml:1","Info: found token with 'none' permissions: .github/workflows/macos.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/pages.yml:11","Info: found token with 'none' permissions: .github/workflows/windows.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/github-release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/github-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/github-release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/github-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/macos.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pages.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/pages.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/pages.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/pages.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/pages.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/windows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/xkbcommon/libxkbcommon/windows.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/linux.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/macos.yml:33","Info:   0 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}}]},"last_synced_at":"2025-09-16T07:08:24.056Z","repository_id":1150094,"created_at":"2025-09-16T07:08:24.056Z","updated_at":"2025-09-16T07:08:24.056Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280064828,"owners_count":26265928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["keyboard","keyboard-layout","keymap","wayland","x11","xkb","xkbcommon"],"created_at":"2024-07-30T22:01:35.334Z","updated_at":"2025-10-20T16:16:04.873Z","avatar_url":"https://github.com/xkbcommon.png","language":"C","funding_links":[],"categories":["TODO scan for Android support in followings"],"sub_categories":[],"readme":"# libxkbcommon\n\n\u003c!--\nNOTE: This file is carefully formatted to support both Github and Doxygen.\nThey handle line breaks differently!\n--\u003e\n\n**libxkbcommon** is a keyboard keymap compiler and support library which\nprocesses a reduced subset of keymaps as defined by the [XKB] \\(X Keyboard\nExtension) specification. It also contains a module for handling *Compose*\nand dead keys, a separate *registry* library for listing available keyboard\nlayouts and a fair set of \u003c!--!\n@rawHtml --\u003e\u003cabbr title=\"Command-Line Interface\"\u003eCLI\u003c/abbr\u003e\u003c!--!\n@endRawHtml --\u003e *tools*.\n\n[XKB]: doc/introduction-to-xkb.md\n\n## Quick Guide\n\n- [Introduction to XKB][XKB]: to learn the essentials of XKB.\n- [User-configuration](doc/user-configuration.md): instructions to add\n  a *custom layout* or option.\n- [Keymap format](doc/keymap-text-format-v1-v2.md): keymap components and keymap\n  text syntax documentation.\n- [Library quick Guide](doc/quick-guide.md): introduction on how to use\n  this library.\n- [Tools](./README.md#tools): introduction to the `xkbcli` application.\n- [Release notes](doc/release-notes.md).\n- [Frequently Asked Question (FAQ)](doc/faq.md).\n\n## Building\n\nlibxkbcommon is built with [Meson](http://mesonbuild.com):\n\n```bash\nmeson setup build\nmeson compile -C build\nmeson test -C build # Run the tests.\n```\n\nTo build for use with Wayland, you can disable X11 support while still\nusing the X11 keyboard configuration resource files thusly:\n\n```bash\nmeson setup build \\\n      -Denable-x11=false \\\n      -Dxkb-config-root=/usr/share/X11/xkb \\\n      -Dx-locale-root=/usr/share/X11/locale\nmeson compile -C build\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eComplete list of user options\u003c/summary\u003e\n@include meson_options.txt\n\u003c/details\u003e\n\n## API\n\nWhile libxkbcommon’s API is somewhat derived from the classic XKB API as found\nin `X11/extensions/XKB.h` and friends, it has been substantially reworked to\nexpose fewer internal details to clients.\n\nSee the [API Documentation](https://xkbcommon.org/doc/current/topics.html).\n\n## Tools\n\n\u003c!--! @rawHtml --\u003e\nLibxkbcommon has a fair set of \u003cabbr title=\"Command-Line Interface\"\u003eCLI\u003c/abbr\u003e\n\u003ccode\u003etools\u003c/code\u003e, grouped under the \u003ccode\u003exkbcli\u003c/code\u003e application:\n\u003c!--! @endRawHtml --\u003e\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli compile-keymap\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eCompile an XKB keymap\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli compile-compose\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eCompile a compose file\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli how-to-type\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eShow how to type a given Unicode codepoint\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli interactive-wayland\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eInteractive debugger for XKB keymaps for Wayland\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli interactive-x11\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eInteractive debugger for XKB keymaps for X11\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli interactive-evdev\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eInteractive debugger for XKB keymaps for evdev\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli dump-keymap-wayland\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eDump a XKB keymap from a Wayland compositor\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli dump-keymap-x11\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eDump a XKB keymap from a X server\u003c/dd\u003e\n\u003cdt\u003e\u003ccode\u003exkbcli list\u003c/code\u003e\u003c/dt\u003e\n\u003cdd\u003eList available layouts and more\u003c/dd\u003e\n\u003c/dl\u003e\n\nIt may require the installation of the package `libxkbcommon-tools` or similar\nname.\n\n## Dataset\n\nlibxkbcommon *does not distribute a keyboard layout dataset itself*, other than\nfor testing purposes.  The most common dataset is **xkeyboard-config**, which is\nused by all current distributions for their X11 XKB data.  Further information\non xkeyboard-config is available at its [homepage][xkeyboard-config-home] and at\nits [repository][xkeyboard-config-repo].\n\nThe dataset for *Compose* is distributed in [libX11], as part of the X locale\ndata.\n\n[xkeyboard-config-home]: https://www.freedesktop.org/wiki/Software/XKeyboardConfig\n[xkeyboard-config-repo]: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config\n[libX11]: https://gitlab.freedesktop.org/xorg/lib/libx11\n\n## Relation to X11\n\nSee [Compatibility](doc/compatibility.md) notes.\n\n## Development\n\nAn project’s homepage can be found at https://xkbcommon.org.\n\nxkbcommon is maintained in git at: https://github.com/xkbcommon/libxkbcommon\n\nPatches are always welcome, and may be sent to either\n\u003cxorg-devel@lists.x.org\u003e or \u003cwayland-devel@lists.freedesktop.org\u003e\nor in a [GitHub](https://github.com/xkbcommon/libxkbcommon) pull request.\n\nBug reports (and usage questions) are also welcome, and may be filed at\n[GitHub](https://github.com/xkbcommon/libxkbcommon/issues).\n\nThe maintainers are:\n- [Daniel Stone](mailto:daniel@fooishbar.org)\n- [Ran Benita](mailto:ran@unusedvar.com)\n- [Pierre Le Marre](mailto:dev@wismill.eu)\n\n## License\n\nSee the [LICENSE](doc/license.md) file.\n\n## Credits\n\nMany thanks are due to Dan Nicholson for his heroic work in getting xkbcommon\noff the ground initially.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxkbcommon%2Flibxkbcommon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxkbcommon%2Flibxkbcommon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxkbcommon%2Flibxkbcommon/lists"}