Read HID++ feature 0x4540 KeyboardLayout to detect the device's country code, then route the per-key painter to a matching regional layout. Changes: - lib/logitech_receiver/hidpp20.py: new get_keyboard_layout() returning the HID Usage Table country code from feature 0x4540's first response byte. - lib/logitech_receiver/device.py: lazy device.keyboard_layout property, guarded by feature presence so devices without 0x4540 don't pay a query cost on access. - lib/solaar/ui/perkey/control.py: thread the country code into the editor hint dict. - lib/solaar/ui/perkey/layouts/_keyboard_base.py (new): factor out the function row, nav cluster, and numpad block as shared building blocks. Two main-block variants (ANSI with row 2 col 13 backslash, ISO without) cover all five regions. build_layout() applies per-zone label overrides on top of either main block. - lib/solaar/ui/perkey/layouts/keyboard_ansi.py: refactored to use the builder; same LAYOUT_FULL/LAYOUT_TKL exports. - lib/solaar/ui/perkey/layouts/keyboard_iso_qwerty.py (new): UK English ISO. Same shape as DE/FR/JIS but no label overrides. - lib/solaar/ui/perkey/layouts/keyboard_iso_qwertz.py (new): DE/Swiss -- Y/Z swap, Ü/Ö/Ä/ß placement. - lib/solaar/ui/perkey/layouts/keyboard_iso_azerty.py (new): FR -- A↔Q, W↔Z, French digit-row symbols, M repositioning. - lib/solaar/ui/perkey/layouts/keyboard_jis.py (new): JP -- @ / [ / : bracket-row relabels. - lib/solaar/ui/perkey/layouts/__init__.py: country-code-aware matchers, five families × two sizes (full/TKL). Defaults to ANSI when 0x4540 is unsupported or returns an unknown code. POUND, ISO_BACKSLASH, and the L-shape Enter top half (zone 46) are intentionally omitted from the ISO layouts -- same coverage as OpenRGB. ABNT2 (Brazilian) deferred until a confirmed Logitech BR RGB device shows up; adding it later is one new layout file plus a country-code entry. Also fix copyright headers on all new lib/solaar/ui/perkey/ files: the files were created in 2026, not 2024 as the headers said. |
||
|---|---|---|
| .github | ||
| bin | ||
| docs | ||
| lib | ||
| po | ||
| rules.d | ||
| rules.d-uinput | ||
| share | ||
| tests | ||
| tools | ||
| .coveragerc | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .python-version | ||
| CHANGELOG.md | ||
| COPYRIGHT | ||
| LICENSE.txt | ||
| MANIFEST.in | ||
| Makefile | ||
| README.md | ||
| RELEASE.md | ||
| RHEL.md | ||
| Release_Notes.md | ||
| mkdocs.yml | ||
| pyproject.toml | ||
| release.sh | ||
| setup.py | ||
README.md
Solaar
Solaar is a Linux manager for many Logitech keyboards, mice, and other devices that connect wirelessly to a Unifying, Bolt, Lightspeed or Nano receiver as well as many Logitech devices that connect via a USB cable or Bluetooth. Solaar is not a device driver and responds only to special messages from devices that are otherwise ignored by the Linux input system.
More Information - Usage - Capabilities - Rules - Manual Installation - Known Issues
Solaar supports:
- pairing/unpairing of devices with receivers
- configuring device settings
- custom button configuration
- running rules in response to special messages from devices
For more information see the main Solaar documentation page. -
Installation Packages
Up-to-date prebuilt packages are available for some Linux distros (e.g., Fedora) in their standard repositories. If a recent version of Solaar is not available from the standard repositories for your distribution, you can try one of these packages:
- Arch solaar package in the extra repository
- Ubuntu/Kubuntu package in Solaar stable ppa
- NixOS Flake package in Svenum/Solaar-Flake
Solaar is available from some other repositories but may be several versions behind the current version:
- a Debian package, courtesy of Stephen Kitt
- a Ubuntu package is available from universe repository
- a Gentoo package, courtesy of Carlos Silva and Tim Harder
- a Mageia package, courtesy of David Geiger