OpenLogi wurde in Version v0.8.14 veröffentlicht.
OpenLogi ist eine native, lokal laufende Alternative zu Logitech Options+, geschrieben in Rust, mit der sich Tastenbelegung, DPI und SmartShift von Logitech-Geräten über HID++ konfigurieren lassen - ganz ohne Konto oder Telemetrie.
Die Version bringt über 90 Änderungen: Kamerasteuerung (Pan, Tilt, Gain, Gegenlichtkorrektur), automatische Tastatur-Hintergrundbeleuchtung mit Energiesparmodus, Easy-Switch-Hostnamen lesen und umbenennen, einen Tap/Hold-Recorder für eigene Shortcuts sowie Report-Rate-Einstellung für Mäuse. Dazu kommen zahlreiche HID++-Fixes, korrigiertes Scrollen unter Linux und ein Actions Ring an der Cursorposition unter Wayland. 17 Entwickler haben erstmals beigetragen.
Änderungen in Version v0.8.14:
What’s Changed
- fix(gui): prefer the Buttons panel over Keys when kind resolution is wrong by @4ni1ak in #1702
- docs(readme): add Spanish translation by @eibidia in #1314
- fix(gui): let the theme card name shrink so the badge fits by @4ni1ak in #1435
- fix(hook): carry the mouse’s vendor/product ID onto its uinput mirror by @4ni1ak in #1453
- fix(cli): let macOS prompt for Input Monitoring before diag opens a device by @4ni1ak in #1256
- fix(gui): draw the client-side titlebar only where the compositor declines one by @4ni1ak in #945
- fix(inject): distinguish Linux Capture Region from Screenshot by @4ni1ak in #1433
- fix(hook): preserve low-res wheel events during Linux pass-through by @nathan-fontenele in #1693
- fix(i18n): use Spain’s Spanish terms in the es catalog by @eibidia in #1326
- docs(i18n): add Portuguese README translation by @obrenoalvim in #1371
- fix(windows): enable HID++ side-button gestures by @c1m-Chenym in #1635
- fix(agent): emit scroll input queued across a smoothing toggle instead of dropping it by @isleofgreg in #1721
- fix(agent): honor an overflow cancel from a generation the scroll worker has not seen by @isleofgreg in #1720
- feat(device): Detect Logitech G735 headset dongle by @xvilo in #1040
- fix(i18n): translate the custom-action input error in Czech by @Imbecile6197 in #1728
- fix(overlay): set the macOS activation policy before gpui_platform starts by @4ni1ak in #1692
- fix(hid): capture alternate gesture controls by @4dux in #1561
- feat(camera): expose pan, tilt, gain and backlight compensation by @yuzi-co in #1020
- feat(gui): add precise camera control entry by @vinayaksodar in #1047
- fix(device): omit raw-xy flags when diverting or restoring keyboard controls by @henius98 in #1726
- fix(inject): send hi-res wheel events for Linux scroll actions (by @RisenID) by @Fede2782 in #1719
- fix(assets): resolve variants for depots whose manifests key on depot name or stem by @felipecadal in #1295
- fix(gui): render camera depots that ship no hotspot metadata by @MattijsE in #1265
- fix(inject): give App Expose/Mission Control/Show Desktop/Launchpad a GNOME implementation by @4ni1ak in #1446
- fix(gui): open the config folder from the fail-closed config screen by @yuzi-co in #942
- fix(gui): give MenuRow-based list rows an accessible name by @4ni1ak in #1448
- fix(camera): collapse a Brio’s IR node into one Linux camera entry by @4ni1ak in #1234
- docs: add Turkish README translation by @4ni1ak in #1734
- feat(hook): reverse the wheel in software for devices without 0x2121 by @4ni1ak in #847
- feat(gui): add custom-shortcut Tap/Hold recorder to the button picker by @fahadjibransheikh in #1396
- fix(agent): reapply volatile settings on device reconnection and retry disagreeing DPI writes by @isleofgreg in #1270
- fix(overlay): properly position and scale Actions Ring on Windows mixed-DPI displays by @c1m-Chenym in #1745
- fix(camera): pass the pan/tilt payload by value by @SMRehan in #1740
- feat(core): add an action that holds modifiers and taps the key once by @Rick0525 in #1161
- feat(gui): update macOS through Sparkle by @AprilNEA in #1744
- docs(ipc): move PROTOCOL_VERSION once per release by @AprilNEA in #1760
- fix(hidpp): write 0x1990 non-linear level tables whole by @AprilNEA in #1765
- fix(hidpp): read the 0x4530 platform with function 0 by @AprilNEA in #1766
- fix(hidpp): write each 0x0007 name chunk at its own offset by @AprilNEA in #1767
- fix(hidpp): preserve device state OpenLogi does not own on writes by @AprilNEA in #1753
- fix(device): encode 0x8080 tail frames and 0x8070 fixed colour per device by @AprilNEA in #1758
- fix(device): write SmartShift torque and DPI only as the device advertises by @AprilNEA in #1759
- fix(device): give the Litra Beam its own brightness range by @AprilNEA in #1763
- fix(device): stop misreading 0x1000 and 0x1001 battery states by @AprilNEA in #1768
- fix(device): stop committing 0x8080 frames the keyboard rejected by @AprilNEA in #1764
- fix(device): own RGB software control for the agent session by @AprilNEA in #1769
- fix(hidpp): require the 0x8081 zone echo before reporting a write by @AprilNEA in #1771
- fix(hidpp): refuse short 0x1990 info and level replies by @AprilNEA in #1772
- fix(device): confirm the haptic repair from the device’s reply by @AprilNEA in #1773
- fix(device): confirm SmartShift writes from the device’s reply by @AprilNEA in #1775
- fix(agent-core): close the RGB release races left by #1769 by @AprilNEA in #1770
- fix(hidpp): require the sensor echo in DPI replies by @AprilNEA in #1776
- fix(device): end a thumb-wheel roll whose Stop never arrives by @AprilNEA in #1777
- docs(hidpp): say that a None remap keeps the current mapping by @AprilNEA in #1778
- fix(hidpp): hold 0x8060 and 0x8061 rates to what the features define by @AprilNEA in #1779
- fix(hidpp): decode every 0x2121 capability flag and the horizontal delta by @AprilNEA in #1780
- fix(hidpp): decode 0x1c00 empty actions and status, and 0x4531 OS bits by @AprilNEA in #1781
- fix(hidpp): keep 0x0003 firmware entity types without a name by @AprilNEA in #1783
- fix(hidpp): refuse a short 0x40A3 reply instead of zero-filling it by @AprilNEA in #1782
- fix(hidpp): treat a Bolt protocol byte in 0x41 as an encrypted link by @AprilNEA in #1784
- fix(device): reconcile inventory on 0x1000/0x1001 battery broadcasts by @AprilNEA in #1787
- fix(device): wait for the Unifying lock to open before searching by @AprilNEA in #1785
- fix(device): report no percentage for a 0x1004 battery without a gauge by @AprilNEA in #1788
- fix(hidpp): check the echoed index in 0x8070/0x8071 info and 0x0007 name reads by @AprilNEA in #1789
- fix(hidpp): read a non-BCD 0x0003 firmware version as binary by @AprilNEA in #1790
- fix(device): re-read settings the device changes itself by @AprilNEA in #1791
- fix(device): drive Fn-lock on keyboards that only have 0x40a0 by @AprilNEA in #1792
- fix(device): play only the haptic waveforms the device advertises by @AprilNEA in #1796
- feat(camera): name webcams that report no USB product string by @DonovanMontoya in #1793
- chore(deps): bump rustls to 0.23.46 by @AprilNEA in #1805
- feat(device): keep multi-platform keyboards on the host OS layout by @AprilNEA in #1806
- feat(device): adjust the report rate of mice with 0x8060 or 0x8061 by @AprilNEA in #1808
- feat(device): set keyboard backlight automatic brightness, level and battery saving by @AprilNEA in #1811
- feat(desktop): control the keyboard backlight from the Device tab by @AprilNEA in #1812
- fix(device): refuse haptic plays while 0x19b0 reports a non-zero status by @AprilNEA in #1817
- fix(linux): settle the uinput action device before its first emit by @4ni1ak in #1810
- fix(device): don’t let a stuck Empty host-slot status refuse a real pairing by @4ni1ak in #1813
- fix(agent): divert a keyboard key explicitly bound to Action::None by @4ni1ak in #1819
- fix(device): discard the stale first raw-XY report of every gesture hold by @DonovanMontoya in #1786
- fix(scroll): post phaseless continuous scroll events on macOS by @isleofgreg in #1157
- fix(gui): gate debug diagnostics imports in release builds by @gitsacha in #1815
- fix(agent): anchor the recovery-scan timer to scan start, not scan end by @4ni1ak in #1809
- fix(agent): queue HID requests before response timeout by @sh3ll3x3c in #936
- fix(linux): open the Actions Ring at the cursor on Wayland by @AalmanSadath in #1004
- fix(agent): hand off capture across receiver routes by @justinechang39 in #1198
- Horizontal Scroll Reversed #1120 by @romanr in #1140
- feat(device): read Easy-Switch host names and OS, and rename hosts (0x1815) by @AprilNEA in #1824
- fix(overlay): configure accessory policy after GPUI initialization by @gitsacha in #1814
- fix(hook): keep software scroll inversion applied when the agent intercepts the wheel by @4ni1ak in #1749
- feat(desktop): show Easy-Switch hosts on the Device tab and rename them by @AprilNEA in #1825
- fix(hook): keep the pixel delta when inverting a macOS wheel event by @AprilNEA in #1827
- chore: release v0.8.14 by @aprilnea[bot] in #1718
New Contributors
- @nathan-fontenele made their first contribution in #1693
- @obrenoalvim made their first contribution in #1371
- @c1m-Chenym made their first contribution in #1635
- @xvilo made their first contribution in #1040
- @4dux made their first contribution in #1561
- @vinayaksodar made their first contribution in #1047
- @henius98 made their first contribution in #1726
- @Fede2782 made their first contribution in #1719
- @felipecadal made their first contribution in #1295
- @MattijsE made their first contribution in #1265
- @fahadjibransheikh made their first contribution in #1396
- @SMRehan made their first contribution in #1740
- @Rick0525 made their first contribution in #1161
- @DonovanMontoya made their first contribution in #1793
- @gitsacha made their first contribution in #1815
- @justinechang39 made their first contribution in #1198
- @romanr made their first contribution in #1140

Quelle: GitHub