[ANNOUNCE] libratbag 0.18

Yaroslav Chvanov yaroslav.chvanov at gmail.com
Tue Sep 24 16:19:00 UTC 2024


libratbag v0.18 is out.

The list of interesting changes are:

- This release bumps D-Bus API version and is not compatible with older Piper versions.
- Add button disabling.
- Add resolution disabling (used in hidpp20 and sinowealth drivers).
- Add firmware version API (used in steelseries and sinowealth drivers).
- Add debounce time changing (used in asus and sinowealth drivers).
- Add device type API (allows Piper to reassign first two keys on keyboards).
- Add angle snapping changing (used in asus driver).
- ASUS - implement simple key actions button mappings.
- Sinowealth - implement several device profiles.
- Fix crash on on profile disabling.
- Clamp minimal allowed report rate to 125hz.
- Properly announce property changes to D-Bus (so Piper can reflect changes made with ratbagctl without restarting).
- New supported devices:
  - ASUS ROG Chakram Core
  - ASUS ROG Chakram X
  - ASUS ROG Harpe Wireless
  - ASUS ROG Keris Wireless AimPoint
  - ASUS ROG Spatha X
  - ASUS ROG Strix Impact II
  - Logitech G PRO Keyboard
  - Logitech G102 (new variation: usb:046d:c09d)
  - Logitech G303 Shroud Edition
  - Logitech G413 (keyboard)
  - Logitech G733 (new variation: usb:046d:0afe)
  - Logitech MX Anywhere 3S
  - Logitech MX Master 3S
  - Logitech MX Master 3S for Business
  - Mad Dog GM905 (sinowealth)
  - Mars Gaming MM4 (new driver 'marsgaming')
  - SteelSeries Rival 650 Wireless
  - T-Dagger Imperial T-TGM310 (sinowealth)

See the full log at the end if you are interested in the details.

BigBoiMan123 (1):
      data: add ASUS ROG Keris Wireless AimPoint

Daniel Levi-Minzi (1):
      add rog harpe ace wireless

Filipe Laíns (1):
      hidpp20: enable disabling buttons on onboard profiles (0x8100)

Jon (1):
      data: update logitech-g915-tkl.device to DeviceType=keyboard

José Almeida (1):
      data: add device Logitech G Pro (X) keyboard

Julian Kandlhofer (2):
      implement 'DeviceType' property
      change misnamed function name

Kirk Roybal (1):
      data: add Logitech MX Master 3S for Business

Kyoken (20):
      asus: add strix impact 2
      asus: button mapping reworked
      asus: fix building errors
      asus: add spatha x
      asus: rename params
      asus: handle undefined buttons
      asus: fix button mapping type
      asus: allow empty cells in bindings table and fix pugio button bindings
      asus: pugio button mapping
      implement key bindings feature
      fix ratbag-command key bindings
      use key name instead of code for binding
      fix typo in macro bindings
      add angle snapping and debounce
      ratbagd.py: don't mark a profile as dirty on active profile switch
      data: fix asus chakram x
      asus: check mouse in probe, fix asus status code
      asus: fix single profile devices
      asus: warn on unknown key codes
      asus: add rog chakram core

Matt Coffin (1):
      steelseries: add support for Rival 650 Wireless

Matthias Bach (1):
      build: install ratbagd into sbindir

Michał Lubas (4):
      Update ratbagctl.test
      Replace removed imp module with importlib
      meson.build: Don't pass a file to str.format
      Add a delay before dbus sync in ratbagctl.test

Odd Eirik Nes (1):
      data: add an additional usb identifier for Logitech G733

Peter Hutterer (4):
      tools: convert our enum equivalents to python enums
      libratbag: Fix the action type NONE handling
      ratbagd: map disabling a button to the existing action type None
      ratbagd: switch Profile.Enabled to Profile.Disabled

Peter Oliver (1):
      Adjust offered resolutions for SteelSeries Kinzu V3

Qjammer (1):
      marsgaming: implement Mars Gaming MM4 protocol

Red_M (1):
      Fix spatha x device file.

Ryan Jensen (1):
      updating documentation: linux/input.h -> linux/input-event-codes.h

Stephan Lachnit (4):
      Make order of resolution properties consistent
      Implement disabled resolutions
      driver-hidpp20: implement disabled resolutions
      data: add support for Logitech G413 keyboard

TCH (1):
      data: add Logitech MX Master 3S

Vladislav Tyulbashev (1):
      data: add Logitech MX Anywhere 3S

Yaroslav Chvanov (283):
      sinowealth: fix writing of `key` button action type
      sinowealth: do an `assert` instead of graceful internal bug handling
      sinowealth: remove now unused `button_set_key_action_from_macro`
      libratbag-data: fix formatting
      asus: make pointer variables `const` wherever possible
      asus: use ARRAY_FOR_EACH
      build: bump ratbagd DBus API version
      ratbagctl: add an error message if the key supplied to macro is wrong
      ratbagd: use NULL instead of 0 for pointers
      ratbagd: fix formatting
      tools: put the list of possible button action types into a const
      test: fix incorrect type of file paths in data-parse-test
      test: add type hints to data-parse-test
      data: fix missing `Driver` field
      test: add `wheel` to the list of permitted LED types
      test: work-around unsupported Driver section of the `sinowealth` driver
      build: fix data tests not running
      test: fix formatting
      test: data-parse-test: check all files even if there is an error
      test: fix incorrect character escaping in data-parse-test
      test: increase max DPI in check_dpi_range_str() to 36000
      test: make check_section_driver() a bit more diff-friendly
      test: add device data tests for the asus driver
      test: add device data tests for the steelseries driver
      sinowealth: print a warning if there are too much events in a macro
      sinowealth: use non-GNU-specific empty array initializer
      sinowealth: fix some variable types
      sinowealth: make all casts explicit
      sinowealth: simply return a `bool` instead of 0 or 1
      sinowealth: assert instead of silently ignoring an error
      sinowealth: fix a typo
      sinowealth: deduplicate the code of reading configuration data
      sinowealth: add support for reading 2 profiles (if a macro is set)
      sinowealth: fix a missing new line in logging
      sinowealth: refactor sinowealth_update_macro_from_action()
      sinowealth: improve error handling
      sinowealth: add support for button actions in macros
      sinowealth: add support for writing additional profiles
      sinowealth: explain additional profiles and their pit-falls
      sinowealth: further deduplicate the code of reading config data
      sinowealth: enable profile cycling mapping with a preprocessor macro
      ratbagd: fix error handling in ratbagd_button_set_none()
      libratbag: check if disabling buttons is supported
      ratbagctl: check if disabling buttons is supported
      sinowealth: enable button disabling support
      Revert "tools: convert our enum equivalents to python enums"
      ratbagc: add NONE as allowed action type
      ratbagd.py: make the profile dirty after changing report rate
      ratbagd.py: fix changes to IsActive potentially not being notified about
      sinowealth: implement disabled resolutions
      ratbagd: fix stack smashing
      ratbagctl: fix typo
      doc: fix documentation for disabling resolutions
      Fix typos throughout the codebase
      libratbag-util: make asprintf_safe() return a char*
      device: add firmware version API
      sinowealth: save the firmware version in ratbag device
      steelseries: save the firmware version in ratbag device
      hidpp10: return EINVAL instead of aborting
      driver-hidpp10: fix integer overflow when profile count is unset
      ratbagctl: capitalize device type instead of having it in upper case
      tools: fix incorrect special method signature
      tools: remove an unnecessary variable definition
      tools: remove an unused function that always raises
      G300: prevent unused variable usage warning
      G600: prevent unused variable usage warning
      hidpp10: fix a faulty error check which prevent macro parsing
      test: remove a duplicate import
      ratbagd: don't extract sd_bus when it's given as an argument
      sinowealth: remove an incorrect enum member
      hidpp10: fix variable shadowing
      test: fix variable shadowing
      driver-hidpp20: fix variable shadowing
      driver-hidpp10: fix variable shadowing
      libratbag-util: check the return value of scanf
      tools: check snprintf size argument to prevent potential overflow
      tools: fix incorrect special method signature
      tools: remove unused arguments
      test: add explanations to empty excepts
      tools: use with-statements to open files
      tools: remove unused variables
      tools: write to file directly without using `print`
      G600: don't enable key-type button actions
      steelseries: don't enable key-type button actions
      G300: don't enable key-type button actions
      etekcity: don't enable key-type button actions
      roccat-kone-emp: don't enable key-type button actions
      roccat-kone-pure: don't enable key-type button actions
      roccat: don't enable key-type button actions
      etekcity: remove support for the deprecated button type field
      gskill: remove support for the deprecated button type field
      hidpp10: remove support for the deprecated button type field
      G300: remove support for the deprecated button type field
      G600: remove support for the deprecated button type field
      roccat-kone-emp: remove support for the deprecated button type field
      roccat-kone-pure: remove support for the deprecated button type field
      roccat: remove support for the deprecated button type field
      steelseries: remove support for the deprecated button type field
      test: remove support for the deprecated button type field
      tools: remove helpers for the deprecated ratbag_button_type
      gskill: remove support for the deprecated button type field
      hidpp20: don't set the deprecated button type field in the driver
      hidpp20: remove unused physical mapping button type
      libratbag: remove support for the deprecated button type field
      hidpp20: remove usage of the deprecated LED type in the driver
      hidpp20: remove unused LED type mappings
      tools: remove helpers for deprecated LED types
      asus: remove usage of deprecated LED types
      sinowealth: remove usage of deprecated LED types
      G600: remove usage of deprecated LED types
      steelseries: remove usage of deprecated LED type
      hidpp20: remove usage of deprecated LED types
      roccat-kone-emp: remove usage of deprecated LED types
      data: remove usage of the deprecated LED type field
      test: don't allow the deprecated LedTypes field
      G300: remove usage of the deprecated LED type field
      libratbag-data: don't parse LedTypes from device files
      sinowealth-nubwo: remove usage of the deprecated LED type field
      test: remove usage of the deprecated LED type field
      libratbag: remove everything related to the deprecated ratbag_led_type
      sinowealth: don't change active profile while probing
      sinowealth: add missing new-line in a log message
      sinowealth: move active profile index and debounce time getting to init
      sinowealth: edit a note about active profile index to be more clear
      sinowealth: get rid of profile cache
      sinowealth: use the first profile if active profile index is too high
      tools: don't try to return the first profile on error
      tools: don't try to return the first resolution on error
      ratbagctl: check if there is an active profile
      ratbagctl: check if there is an active resolution
      gskill: add back button type button actions
      Rename Python files throughout the project to have `.py*` in the suffix
      tools: prevent a syntax error for code editors and linters
      build: add Python code formatting with black
      Format Python code
      build: add Ruff for Python code linting
      Automatically fix Ruff warnings
      test: fix ambiguous variable names
      tools: fix ambiguous variable names
      tools: chain exceptions within exceptions
      tools: don't use complex types as default function arguments
      tools: ignore a false positive warning
      tools: fix "line too long" warnings where possible
      ratbagctl: add type hints where possible
      ratbagctl: simplify an expression to make mypy understand it
      ratbagctl: make an argument non-optional
      ratbagctl: don't reuse a variable for different types
      ratbagctl: rename a member function to prevent incorrect overriding
      Remove flake8 configuration file
      sinowealth: implement debounce time reading/writing
      doc: add angle snapping and debounce time
      ratbagctl: use textwrap.indent instead of inventing the wheel ourselves
      tools: remove unnecessary `pass` statements
      lint: enable flake8-pie lints
      ratbagctl: fix an incorrect type hint
      ratbagctl: use standard exception types
      ratbagctl: remove unnecessary else
      test: raise ValueError instead of AssertionError manually
      test: don't return anything from main()
      tools: make all exceptions types have Error as the sufix
      Use 'key in dict' instead of 'key in dict.keys()'
      Use 'a != b' instead of 'not a == b'
      lint: enable flake8-simplify
      lint: enable flake8-return
      test: fix traceback.print_exception() usage on older Python versions
      lint: exit early if git ls-files doesn't find anything
      build: use project-local build and source directories
      test: use a simply `assert` instead of using a helper
      build: add a missing dependency to a test
      ratbagd.py: add back .keys() calls on all GLib.Variant
      tools: print errors to stderr
      tools: skip linter checks if linters are not installed
      libratbag: don't apply active profile change until committing
      sinowealth: fix incorrect placement of `sensor_type` in config data
      sinowealth: add more debug logging for easier device file creation
      sinowealth: add support for PMW3212 sensor
      data: add links to device issues with raw configuration data
      data: add Sinowealth Generic Mouse (258a:0051)
      libratbag: fix profile not becoming dirty on active profile switch
      libratbag: add API for checking if profile is dirty
      ratbagd: add `IsDirty` property to profiles
      ratbagd.py: use the IsDirty property of the DBus API
      libratbag: check if driver supports committing
      libratbag: check if profile is dirty in sanity check
      Fix drivers making profiles dirty while probing
      libratbag-util: make dpi_list_free() be able to take NULL
      libratbag-data: use the dpi_list_free helper
      libratbag: remove fall back for Logitech devices
      libratbag: take constant pointers where possible
      ratbagd.py: sync with Piper
      ratbagctl: show if a profile is dirty
      sinowealth: add command IDs for the third profile
      sinowealth: update the comment about profile count
      sinowealth: check for device compatibility as soon as possible
      sinowealth: add and use profile count in drv_data
      sinowealth: rename `MAX` to the variable with maximum profile count
      sinowealth: make an error message less generic
      sinowealth: add "cycle LED modes" binding to unknown
      sinowealth: read profile count from the device file
      sinowealth: change "profile-up" button binding to cycle
      sinowealth: use early return
      sinowealth: conditionally enable writing profile-switching bindings
      sinowealth: allow up to three profiles
      data: enable second profile for T-Dagger Imperial T-TGM310
      sinowealth: fix logging using wrong member
      sinowealth: don't try to live through errors while committing
      libratbag-data: set fallback value in the same place as the proper value
      sinowealth: check if ButtonCount field in device file is correct
      data: add SinoWealth driver to the example device file
      fixup! sinowealth: read profile count from the device file
      ratbagd: change type of a variable to fix stack smashing
      tools: fix printing of macros with buttons in them
      test: check that disabled profile can't made active
      libratbag: don't allow setting disabled profile as active
      test: check that active profile can't be disabled
      libratbag: don't allow disabling active profile
      build: remove redundant build targets for tests
      test: add test for sinowealth driver sections in device files
      sinowealth: change device files to match other drivers
      shared-macro: make startswith() return a const char*
      sinowealth: store firmware version in device files in the group name
      data: improve description of possible fields for sinowealth driver
      sinowealth: show a more detailed message for unknown mice
      steelseries: don't use `else` after `return`
      steelseries: add commit error logging
      steelseries: simplify loop breaking
      steelseries: don't use reserved underscore identifiers
      steelseries: don't define variables on a single line
      steelseries: fix narrowing conversions
      steelseries: make most of implicit conversions explicit
      steeseries: make an array `static const`
      steelseries: add missing newlines to logging
      sinowealth-nubwo: fix incorrect firmware version getting error check
      sinowealth-nubwo: correctly use an attribute
      sinowealth-nubwo: remove trailing whitespace
      sinowealth-nubwo: idiomatically zero initialize a struct
      liblur: check return value instead of comparing the out_ptr
      driver-hidpp20: zero initialize a struct
      openinput: return early instead of making an error-prone zero-sized VLA
      steelseries: check for settings reading errors
      steelseries: ignore the check for HID vendor device
      Use f-strings for formatting
      ratbagd.py: sync with Piper
      ratbagctl: ignore a Ruff f-string formatting warning (UP032)
      doc: fix ActionTypes
      doc: remove leftover docs generators for libratbag-enums
      doc: remove an outdated section from IsDisabled field of Resolution
      doc: don't say that report rate is related to resolutions
      libratbag: refactor ratbag_action_macro_num_keys()
      libratbag: drop everything related to simple key action modifiers
      sinowealth: make report rates list const
      sinowealth: handle errors in sinowealth_update_macro_events_from_action
      sinowealth: handle errors in sinowealth_button_set_key_action
      sinowealth: change some default switch cases, comments and code style
      sinowealth: write simple enough macros as key actions
      ratbagd: show version when starting
      hidpp20: remove an unused variable
      libratbag: add a bit of const correctness
      libratbag-hidraw: add const correctness
      libratbag-data: fix narrowing conversions
      libratbag-util: add const correctness
      sinowealth: put a number into a const
      sinowealth: add a note about a bit mask
      steelseries: remove an unneeded import
      build: move rbtree into a subdirectory
      build: remove Coverity work-around
      test: format receiver IDs as hex numbers
      ratbagd-profile: cap minimum report rate to 125
      driver-hidpp20: remove unused static function
      sinowealth: add report rate cycling key mapping
      sinowealth: fix typos and reformat
      sinowealth: fix lift-off distance reading integer overflow
      ratbagd: fix typo
      ci: update linter settings format for ruff
      ratbagc: fix new Ruff lints
      sinowealth: use existing libratbag helper for converting macro to raw
      libratbag: remove FIXME for simple key action modifiers
      ratbagctl: fix Ruff warnings
      ratbagctl: remove unused imports
      ratbagctl: use correct type hint for def main
      ratbagd: format with ruff format
      release.sh: use bash from PATH in shebang
      libratbag 0.18

Zebreus (1):
      doc: fix typo in readme

fritteli (1):
      data: set device type of Logitech G513 to keyboard

halting (1):
      Revert "g300: use the correct step size"

koliwbr (1):
      data: add support for Mad Dog GM905

lennie420 (1):
      Logitech G303 Shroud Edition device file

mistepien (1):
      data: add additional USB id for Logitech G102 (046d:c09d)

git tag: v0.18

The libratbag project does not generate tarballs for releases, you can
grab one directly from github:

https://github.com/libratbag/libratbag/archive/v0.18/libratbag-0.18.tar.gz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/input-tools/attachments/20240924/041f8082/attachment.sig>


More information about the Input-tools mailing list