- Handle fake feature enums in show
- Fix battery entries in config.yaml
- Add ratchet setting for smart shift enhanced devices
- Refactor Gesture into enum
- Replace ERROR NamedInts by IntEnum (#2645)
- Refactor hidpp20 to use enum
- Update Polish, Swedish, Norwegian Nynorsk (nn), and Norwegian Bokmål (nb) translations
- Use IntEnum for firmware and cidgroup constances
- Change pairing error values to intenums
- Fix initialization bug for PackedRangeControl
- Add tests for feature class, process_notification, and key_is_down
- Check all bits for extended report rate
- Add type hints
- Improve about dialog
- Reduce dependencies
- Refactor code
- Improve testing
- Allow unknown keys in Key rule conditions
- Improve documentation for cli actions
- Cycle sw_id to better guard against duplication of messages
- Handle error return on root feature
- Clean up documentation
- Improve github interactions
- Add information about Onboard Profiles overriding some settings
- Add wording to README.md that Solaar is not a device driver
- Clean up imports
- Handle unknown device kinds
- Fix broken links to Solaar logo
- Use mkdocs for public documentation
- Clean up setup.py
- Remove Dead links in the AppStream file
- Update about.py
- Remove check on driver
- Improve base module
- Remove unnecessary receiver info 'hid_driver'
- Convert HIDPPNotification to dataclass
- Be defensive when converting battery status to string
- Automatically detect packages in /lib
- Clean up locale code
- Improve rules documentation
- Refactor creation of devices
- Add headings to structure rules.md
- Unify imports in logitech package
- Don't ping device when getting name or codename
- Use dataclasses and enums where useful
- Introduce Device protocol and type hints
- Add typing_extensions dependency
- Move hidpp10 independent functions to module level
- Fix macOS compatibility and reenable CI tests
- Unify imports in hidapi package
- Move screenshots into dedicated folder and add high-level graph of components
- Update French and Chinese translations
- Drop support for end-of-life Python 3.7
- Update Polish and Russian translations.
- Fix bug in suspend and resume callback
- Add choices universe for backlight setting
- Add simplify diversion.py and add unit tests
- Get and use current host number for K375sFnSwap because of bug in firmware of MX Keys S
- Fix bug with logo in about window
- Don't ping device just to get logging information
- Optimize write for per-key lighting
- Add and initialize per-key lighting to a special no-change value
- Remove some Python 2 compatibility code
- Update French translation
- Refactor rule loading for testability
- Check for existence of keys file before opening
- Perform translation for all translatable strings.
- Add included hid_parser to packages installed
- Improve label and description for LED zone settings
- Add message about Onboard Profiles to LED Zone settings
- Initialize device registers to empty list
- Use bluez dbus signals to disconnect and connect bluetooth devices
- Handle a different signal for onboard profiles directory in ROM
- Introduce small delay in getting pairing information to let receiver settle after pairing
- Improve testing for settings_templates, settings, hidpp20, and device and fix small bugs found
- Add extended adjustable DPI setting
- Improve and extend infrastructure for testing setting_templates
- Update Greek, Polish, Russian, and Traditional Chinese translations
- Implement and test per-key lighting
- Refactor and test pair_window in GUI
- Handle situation when read of a setting fails in GUI
- Permit continuing when a read during pushing fails
- Fix bug in LEDZoneSetting when effect is not implemented
- Add tests for LEDEffect structures in hidpp20
- Handle BRIGHTNESS_CONTROL notifications
- Add settings for BRIGHTNESS_CONTROL and RGB_EFFECTS features
- Fix small bugs found from testing in settings
- Use f-strings for more exceptions and log message
- Tests for setting_templates
- Simple change in settings to improve testability
- Use feature_request from the device everywhere in hidpp20
- Fix bug in backlight 2 durations
- Replace deprecated code constructs
- Set up test data and classes to help test HID++ interactions
- Use pytest to test code for logitech_receiver modules
- Align init methods for all receiver classes
- Start refactoring of code base
- Allow sub-second delays in Later
- Fix bug in setting configuration cookie due to bad documentation
- Use ruff for code styling and linting
- Upgrade string formating to f-string
- Document battery-icons=solaar option
- Tell devices to delay device sending first messages until configuration is done
- Optimize some functions in FeaturesArray
- Fix bug in creating features array
- Fix bug in building battery line in show
- Refactor diversion_rules
- Fix bug in determining tray icon
- Fix bug in getting friendly name
- Move status information to Device and Receiver objects
- Add tests for get_kind_from_index and base product information
- Update EX100 documentation
- Use object attributes instead of dictionary in status objects
- Create subclasses of receiver for different variants
- Add requirement for CONFIG_HIDRAW to documentation
- Add some low-level tests for some hidpp20 functions, profiles, and lighting and some hidpp10 tests
- Fix app name casing in UI
- Add missing receiver type for Lightspeed receivers
- Add new device types
- Refactor device and receiver instantiation
- Simplify naming of distribution files
- Clean up some logging code
- Remove duplicated code to read register
- Introduce Hidpp20 and Hidpp10 class
- Remove unnecessary calls of del
- Fix bug when reading BACKLIGHT setting from device
- Replace invalid hidpp10 and hidpp20 usages
- Use only timer thread to save config.yaml
- Improve README
- Copy newer version of hid_parser
- Reorder code in settings
- Update installation documentation
- Add missing license blocks
- Clean up listener and notifications code
- Add locks to prevent multiple persisters for device
- Clean up configuration, device, and receiver code
- Move battery constants common to HID++ 1.0 and 2.0 to common
- Move mapping of device kind into hidpp20
- Move pairing information gathering to receiver
- update contributors
- Expand allowable profile numbers
- Clean up init in logitech_receiver
- Modify pre-commit args to make ruff change files
- Fix bug in hidpp20 get host names
- Use ruff for formatting and linting
- Fix bug in rule Set action
- Add notify module to logitech_receiver
- Implement setting_changed callback and pass in to new devices and receivers
- Add callback to call when changing a setting
- Move exceptions, hidpp20 and hidpp10 constants into new modules
- Streamline status code
- Upgrade debugging in udev
- Fix deprecated GitHub actions
- Extend makefile and tests
- Improve features array
- Move ui_async to common.py
- Improve module imports
- Add tests of common module
- Rename light icons and install them in correct place
- Setup macOS tests using GitHub action (#2284)
- Better checking for setting in record_setting
- Fix invalid func name set logo name
- Simplify installation of udev rules
- Add document on implementation
- Tidy up scrolling appearance in configuration panel
- Correctly handle profile button with no action
- Don't unlock setting when changed by external means
- Refactor code to record change to setting
- Add GitHub action for tests
- Introduce tests with pytest
- Simplify logger instantiation
- Update label and tooltip for divert-gkeys setting
- Don't lock setting when an error occurs
- Catch assertion errors when reading setting values from devices
- Support LED Zone control feature
- Dump and load device profiles
- Select among profiles.
- Support backlight levels and duration
- Use "Report Rate" instead of "Polling" for movement report rate
- Support extended report rate setting
- Add stable branch to release.sh (#2236)
- Fix changelog parsing in release.sh
- Update installation.md with new udev rules location
- Downgrade assertion on missing notification flag to warning
- Write empty file if there are no rules to save
- Be defensive in device error messages
- Add descriptions of M650, PRO X 2, G915, MX Anywhere 2S, G305, and MX Keys S
- Report hidraw node in debugging messages
- Add names for new Logitech features
- Update Spanish, French, and Polish translations
- Defend against lightspeed receivers that contact devices for basic information
- Remove incorrect feature for M325 mice
- Add K845 keyboard
- Add partial support for macOS and minimal support for Windows
- Correctly enumerate devices on receiver
- Add wording in documentation about Logitech reusing model numbers
- Better handling and installation of icons
- Catch errors when pinging to try to put device online
- Be more cautious when creating log messages to avoid exceptions
- Correctly handle NoSuchDevice exception when pinging device
- Fix test in rules for device equality
- Add installation instructions for pipx and add not about other GTK system packages
- Fix bug in NamedInt
- Add support for MK550
- Install udev rule files to correct placces
- Expand expected ping responses
- Update codename when device status changes
- Add information about NixOS flake package
- Permit bluetooth devices in hidconsole
- Add descriptor for Logitech MX Revolution Mouse M-RCL 124
- Improve determination for short and long messages
- Add descriptor for G500s
- Fix bug in scan-registers
- Add single depress and release options for rule mouse click action
- Add rule condition for hostname
- Update keysym generation to current list of keysyms
- Allow device 0 in hidconsole
- Upgrade messages when no supported device found
- Documentation update for the gnome extension for better Solaar rule support
- Remove udev-acl tag from udev rules
- Add support for process condition in Wayland
- Update French, Chinese, and German translations
- Add G733 Headset
- Restore tools/clean.sh
- Add Bluetooth Keyboard C714
- Update several device descriptions
- Update scan-registers.sh
- Remove assertion on last byte of ping responses
- Add symbolic version of solaar icon
- Fix bug when finding name or codename
- Update documentation
- Put version in initial INFO logging message
- Add descriptors for G535 wireless gaming headset and wireless keyboard EX110
- Update Greek translation
- Fix minor issues in documentation
- Remove some deprecated GTK code
- Use zero exit code for kill interrupts
- Add rule Test condition for battery charging
- Get wpid for 28Mz devices from udev when enumerating
- Add Device condition to rules
- Don't show wireless link or battery information when unknown or not present
- Add desccriptor for G9x and LX7 mice
- Fix bug in determining kind of devices for 27Mz receivers
- Set initial lock status of smooth scrolling features to ignore
- Fix glitch in configuration file update when changing versions
- Add more debugging output for rules
- Clean up pinging code
- Put initial ping of direct-connected devices inside listener thread
- Read and check before write of range settings
- Improve pairing determination
- Cut off determination of receiver devices when all have been found
- Remove derived configuration fields when Solaar version changes
- Allow device descriptors without name and codename
- Filter and escape technical detail fields
- Add setting for ADC power managemen
- Correctly determine whether to ping with a long HID++ message
- Add description for K470 keyboard from the MK470 combo (#1945)
- Add setting value for mouse gestures
- Update German and French translations
- Remove old clean.sh and monitor.py tools
- Retry opening device if permissions error encountered
- Better handlling of IO errors at device creation
- Add KeyIsDown rule condition to check whether a diverted key is down
- Clean up device and receiver creation
- Add parameter to thumb wheel rule conditions
- Rename Serbian translation file
- Update Polish translation
- Improve handling of wheel notifications
- Only record changes of scroll wheel ratchet
- Don't mark setting as absent if there are device errors
- More robust access to keyword exception fields
- Add support for config change feature
- Clean up GTK code
- Update documentation on mouse gestures and known issues
- Get commit information from git describe and dpkg-parsechangelog
- Update pre-commit tools to current versions
- Update installation instructions
- Add 8-character commit hash to version information
- Update solaar.desktop (#1857)
- Get release in setup.py by reading lib/solaar/init.py
- Remove version number from docs/_config.yml
- Update solaar.desktop
- Update es.po
- Clarify status of C542 receiver
- Update devices directory
- Add description of several devices
- Show name of disconnecting receiver or device in disconnect warning
- Reduce standard size of rule editor window
- Remove unnecessary dependency on typing_extensions
- Add dependency on typing_extension to setup.py
- Don't defer saves in CLI and don't require Gtk in CLI
- Be more permissive in recognizing HID++ report descriptors
- Update Polish and Croatian translations
- Switch scroll ratcheting in response to scroll ratchet button notification
- Add setting to turn scroll ratchet on and off
- Eliminate visual glitch when updating range setting
- Make hid-parser an optional dependency
- Only update remaining pairings after successful pairing
- Check for presence of status attribute when resuming
- Update Polish and Croation translations
- Don't add non-existant key in raw xy processing
- Add special keys from MX Mechanical Mini
- Fix processing of HID++ 1.0 battery reports
- Use report descriptors to determine suitable devices
- Handle exceptions when processing configuration file
- Add Logitech PRO Gaming Keyboard
- Fix bad entries in divert-keys when found
- Correctly convert old-style diversions to new style and remove old ones
- Add optional save argument to write_key_value methods
- Use device name in configuration entries if device modelId is zeroes
- Don't show normal DJ messages in debug log
- Add Later rule action
- Correctly record battery feature when ADC produces error
- Print feature call errors in solaar show instead of terminating
- Use ADC notifications to set device inactive and active
- Add one to feature count to count ROOT feature
- Don't check modifiers for KeyPress actions that are not clicks
- Augment comments on what Solaar cannot do
- Fix bug in printing closed handle
- Use only product records to determine which receivers unpair
- Add conditional delay to get around race with Linux HID++ driver
- Add G213 Prodigy Gaming Keyboard
- Update Turkish, Croation, and zh_CN translations
- Move old device descriptions to new locations and clean up
- Increase minimum stopped time between mouse movements
- Fix bug with non-recognized empty mouse movement
- Allow config panel to scroll
- Add descriptions for K360 4004, MX Master 4017, Lightspeed C541, and G915 407D
- Change security tooltip for unencrypted wireless connections
- Add Norwegian Bokmal translation
- Update documentation on continuously running GUI, diverted keys, and changing hosts
- Solaar config no longer applies settings
- Add description of rule components to rule editor
- Ignore first movement for mouse gestures when reprog controls version is 5 or more
- Add Active rule condition to test whether a device is active
- Terminate iteration over receiver devices when all have been found
- Downgrade Set prolem messages from error to warning
- Log informational messages and above to a temporary file
- Don't produce warnings when editing rules in rule editor
- Fix bug that didn't save rules file if there were no rules
- Allow devices with connection number larger than max_devices
- Show more registers in solaar probe
- Show feature versions in solaar show
- Fix problems with deleting devices on exit
- Update German translation
- Update device documentation directory
- Add descriptors for G502 Proteus Spectrum Optical Mouse and G935 headset
- Record feature versions
- Add Serbian translation
- Fix circular import in rules
- Keep track of devices and use in rules
- Update zh_CN and zh_TW translations
- Convert old-style mouse gestures and sliding dpi settings to new style
- Allow multiple keys for mouse gestures and sliding dpi
- Defer saving configuration file for a while to cut down on the number if times it is saved
- Use correct functions for unified battery and battery voltage features.
- Add defensive check for missing keys array in mouse gestures setting
- Better presentation of battery information
- Add support for ADC MEASUREMENT battery feature
- Add information on how to find divertable key names in solaar show output
- Better warnings for feature call errors with reprogrammable key and gesture settings
- Increase entry size for ChoiceControlBig
- Update Croatian translation
- Handle unanticipated values for persistent remappable action as default
- Improve system tray interface documentation
- Remove blank lines from system tray popup
- Update Polish translation
- Add depress and release options to KeyPress rule action
- Only close existing devices for receiver
- Differentiate debug messages for different setting types
- Implement packed range setting in config panel
- Only produce warning for unimplemented display of setting
- Add sidetone and equalizer settings for headsets
- Add packed ranges setting
- Use built-ins for conversions between int and byte string
- Don't add HI_RES wheel ecodes to evdev device codes
- Handle null key in persistent remappable actions when device does not respond
- Consult polling rate feature for polling rate
- Eliminate extra file handles
- Close file handles for receiver-connected devices
- Access to more keys in KeyPress rule action when in other keyboard groups
- Update Turkish translation
- Put battery levels in tray menu labels
- Reduce warnings for inaccessible keys in KeyPress rule action
- Better determination of keycodes and insert needed shifts in KeyPress actions.
- Be careful when processing notifications for partly set up devices.
- Clear out fields for empty persistent remappable action.
- Fix message generation when device is offline.
- Fix bug in feature lookup.
- Add support for G533 Headset and G502 Gaming Mouse
- Improve device features handling.
- Keep trying settings that have worked in the past.
- Store None in persisters for non-persisting settings.
- Only create configuration entries for off-line devices if they have a serial number.
- Update documentation files
- Lower remove python 3.7 constructs and lower python dependency to 3.6
- Fix bug in xtest mouse scrolling
- Allow mouse gesture setting for non-mice, e.g., trackballs
- Print message when there is another Solaar process running
- Fix determination of whether to force read before writing boolean setting
- Add recent diversion features to default list in rules UI
- Add setting to divert hires scroll wheel
- Don't use device kind to determine how to handle notifications
- Update Polish, Russian, and zh_CN translations
- Remove pggettext so as to not require Python 3.8
- Remove Python 2 unicode support
- Store keys in configuration file as int instead of str
- Use yaml for configuration file instead of json.
- Remove process-dependent rules from built-in rules.
- Handle situation where GTK application cannot be set up in CLI.
- Remove obsolete upower signals.
- Appinfo/metadata fixes including using correct APP_ID.
- Fix bugs in solaar config.
- Add full set of mouse buttons in persistent remappable actions setting.
- Improve rule behaviour under Wayland and when Xtest or X11 not available.
- Fix up and document dependencies (evdev, Python, ...).
- Update documentation on supported devices and translations
- Include evdev as a dependency
- Try to use uinput for fake input if XTest extension not available
- Add Nano receiver C542 for M190 mice
- Broaden range of HID++ Bluetooth devices
- Add setting to divert gestures
- Rule editor can edit all rule components
- Configuration via solaar config takes effect in Solaar UI if it is running
- Add setting to disable Onboard Profiles and decouple from Polling Rate setting
- Add setting for PERSISTENT_REMAPPABLE_ACTION, common keyboard and mouse cases only
- Split Test rule condition into Test and TestBytes and support in rule editor
- Fix bug in speed-change setting
- Support Backlight3 feature
- Ensure that settings are pushed in resume
- Update German, Polish, and zh_CN translations
- Determine device number for direct-connected devices from protocol
- fix bug in add and delete button actions in rule editor
- dispose of no-op notifications quickly
- add rule condition for checking device settings
- use local file for conversion from key names to keysyms
- get keyboard group and use to get correct keycodes (X11 only)
- improve how rules work under Wayland
- add settings for M-Key LEDs and MR-Key LED
- fix bug in unpacking M and MR key notification
- add G815 keyboard and MX518 mouse
- add new special keys for recent keyboards
- track M and MR keys for use in rules
- make sure that device is online when searching for devices in solaar show
- don't check for device kind in dpi sliding setting
- fix problem with devices that report 0 DPI
- handle missing divert-setting in action RW for settings
- add id property (unitId or serial) and don't use ? for unknown serial
- fix contains for NamedInts and eliminate use of has_element
- check for xtest and disable modifier checking if not available
- improve determination of gesture information
- add Set rules to rule GUI
- add gesture params to Set rules
- hide system tray when there are no devices to control
- add G733 headset, G9 mouse, G502 Hero mouse
- Use greyscale solaar icon in tray when using symbolic icons
- Fix bugs in solaar config
- Use classes for settings to hep with modularity
- Accept '~' and Toggle for toggling boolean settings in cli and rules
- handle errors when writing to devices
- refactor config_panel.py to use classes for widgets
- add rules action to set Solaar settings
- decrease amount of logging at each debug level
- don't stretch toggles in settings
- use key structure for key remapping setting
- optimize ReprogrammableKey implementation
- keep track of settings that are absent from device
- add G512 keyboard and G402 mouse
- reformat descriptors.py
- use feature numbers for reprogrammable key versions
- don't use new_from_icon_set in menu as it is deprecated
- Keep left pane in Solaar main window the same size
- Fix crash when checking a process condition when X11 not running
- Add version number to output of solaar show
- Fix crash when pinging a device with unknown protocol
- Display battery percentage estimates from battery voltage
- Add minimal support for Logitech PRO X Wireless Gaming Headset
- Push settings when device requests software reconfiguration
- Fix read for key/button diversion setting
- Add modalias information to Solaar metainfo
- Don't do on-screen notifications when devices are powered on
- Add setting to switch crown between smooth and ratchet scrolling
- Add write_prefix_bytes argument to Boolean validator
- Update Russian and Spanish translations
- New shell script tools to help determine capabilities of receivers
- Add special keys for MX Keys for Business and MX Keys Mini
- Improve tray menu ordering
- Add --tray-icon-size option to get around bugs in some tray implementations
- Fix bug when adding receiver to tray menu
- Add Catalan translation.
- Add toggle command to solaar config to toggle boolean settings
- Don't select windows with no PID when looking for focus window
- Catch errors when applying settings so that other settings are not affected
- Add support for Bolt receivers and devices, including pairing
- Revise method for creating system tray menu
- Remove obsolete code (mostly Python 2 compatibility code)
- Add support for PRO X Wireless Mouse, G914 TKL keyboard
- Ignore more notifications that come to a device listener
- Handle more device connection protocols
- Update usage and rules documentation
- Change emojis to text in documentation
- Pare down device documentation so as not to require frequent updates
- Add information about M500S mouse
- Reimplement MOUSE GESTURE and DPI SLIDING settings
- Add setting for DPI CHANGE button to switch sensitivity
- Use file name instead of icon name for tray to avoid XFCE bug
- Update documentation on implemented features and mouse gestures
- Update Polish, Japanese, and Spanish translations
- Make Quit and About strings more translatable
- Don't use time_ns so as not to require Python 3.7
- Correctly determine setting box in change_click method
- Handle fake Nano connection notifications
- Lock on actual handle, not just on handle number
- Mark Nano receiver C52F as not unpairing
- Upgrade pairing/unpairing documentation
- Don't signal status change when battery changes from None to None.
- Add Japanese translation
- Use first word of name for code name if no other code name available.
- Better determination of when to add SW ID.
- Check for more HID++ feature request failing.
- Fix bug with new_fn_inversion setting.
- Use correct device number for directly connected devices
- Add debug message when candidate device found
- Update Polish, Taiwanese, and Brazilian Portuguese translations
- Add MouseProcess a rule condition like Process but for the window under the mouse
- Add parameters for binary settings to support prefixes
- Add locks to serialize requests to devices
- Fix bug when reprog key requests returns None
- Fix bug for empty process name and class
- Rules can now trigger on both pressing and releasing a diverted key
- Upgrade mouse gestures to allow sequences of movements
- Fix gkeys diversion faked read
- Add support for Logitech g pro x superlight receiver
- Convert HID++ 2.0 device kinds to enhanced HID++ 1.0 device kinds
- Update about window, bug report templates, and supported kernels.
- Update sliding DPI to look for suitable keys
- Add mouse gestures that can trigger rules
- Complain if receivers do not support connection notification
- In polling rate setting, only modify onboard profiles when actually writing polling rate
- Add ability to ignore settings.
- Use symbols for receiver sub-registers
- Add support for wired G700
- Do not set attention icon
- Replace deprecated GTK stock menu icons
- Better handling of icons in tray and tray menus
- Receiver c52e does not unpair
- Match active WM_CLASS as well as active process name in rules
- Correctly set icon theme value when regular battery icons are not available
- Handle exception when device is not available when device is being added
- Perform initial activation of devices in listener threads
- Keep track of serial numbers in the configuration file
- Don't update settings for non-active devices
- Set the current host name if not stored on the device
- Add setting for SMART SHIFT ENHANCED feature
- Don't unnecessarily use long messages for HID++ 1.0 commands
- Correctly select choices in solaar config and use 1-origin addressing
- Add quirk for G915 TKL keyboard because its host mode interferes with its Fn keys
- Show command outputs both saved and on-device settings
- Update documentation
- Fix bug in hidconsole
- Update French translation
- Update documentation on devices forgetting settings.
- Improve help messages
- Fix bug in finding receiver to pair
- Solaar config command can set keyed settings.
- Add setting for polling rate
- Use long HID++ messages for all 2.0 requests
- Update German, Italian, and Polish translations
- Solaar config command no longer selects paired but unconnected devices
- Show HID++ 1.0 remaining pairings value in solaar show for devices that support it
- Add option to not use battery icons in system tray.
- Update Polish and Dutch translation.
- Add Czech translation.
- Remove information on SUSE package as it is very old.
- Turn GKEY notifications into Gn key keypresses that can trigger rules.
- Push device settings to devices after suspend when device is immediately active.
- Reduce unnecessary saving of configuration file.
- Better handling of disconnected devices.
- Implement GUI to edit rules.
- Implement rule-base processing of HID++ feature notifications (depends on X11).
- Add settings for diversion of crown and remappable keys.
- Access widgets by name instead of by index.
- Implement UNIFIED_BATTERY feature and use in battery reports.
- Add a clickable lock icon that determines where each setting can be changed.
- Update pt_BR translation
- Support USB and BT connected devices that are not in descriptors.py
- Use FRIENDLY NAME for codename if needed and available.
- Extract manufacturer and product ID from Udev HID information.
- Add Bluetooth and USB product IDs to device descriptors records.
- Support Bluetooth-connected devices.
- Add model ID and unit ID to device identification.
- Support changing DPI by pressing DPI Switch button and sliding horizontally
- Add device-specific notification handlers.
- Add MX Vertical USB information.
- Udev rule adds seat permissions for all Logitech devices.
- Support USB-connected devices in GUI.
- Make probe and config work for USB-connected devices.
- Improve strings and display for settings.
- Correctly handle non-unifying connection notifications.
- Update GUI strings for several settings.
- Better support for EX100 and devices that connect to it.
- Partial support for feature GESTURE_2.
- Simplify interface for settings.
- Use DJ connection notifications to set device active status
- Udev rule sets seat write permissions for hidraw nodes for device as well as receivers.
- Handle USB devices that use HID++ protocol in CLI.
- Use device hidraw nodes where possible.
- Handle receivers with serial numbers that don't provide number of pairings.
- Ignore exceptions when setting locale.
- Correctly discover settings that share a name.
- Don't show pop-up notifications at startup.
- Keep battery voltage updated in GUI.
- Add Portuguese translation.
- Update several translations.
- Add Lightspeed receivers c545 and c541.
- Reimplement REPROG_CONTROLS data structure.
- Clean up documentation files.
- Update documentation on installation.
- Update Swedish and French translations.
- Add Norwegian Nynorsk and Danish translations.
- Fix bug handling DJ pairing notifications.
- Add Norwegian Bokmål translation.
- Remove deprecated solaar-cli application.
- Don't install udev or autostart files from python (or pip).
- Solaar needs Python 3.6+ and probably needs kernel 5.2+
- Handle exceptions on dynamic settings when device is not connected.
- Fix infinite loop on some low-level write errors
- Add support for EX100 keyboard/mouse and receiver (046d:c517)
- Add two settings for THUMB_WHEEL feature - inversion and reporting via HID++
- Update German translation
- Use REPORT RATE feature when available to determine polling rate.
- Improve config command speed when not printing all settings
- Improve config command handling and checking of arguments
- Add setting for CHANGE_HOST feature
- Add argument to settings for values that are not to persist
- Add argument to settings to not wait for reply when writing a value to device
- Add argument to not wait for reply from request to device
- Add settings for MULTIPLATFORM and DUALPLATFORM features
- Remove Logitech documents from documentation directory
- Change config command to not read all settings when only printing or showing one
- Display hosts info in 'solaar show' if device supports it
- Remove non-working smooth-scroll from M510 v1
- Add yapf and flake8 code style checks
- Fix feature k375s Fn inversion
- Update controls (keys and buttons) and tasks (actions)
- Improved way to specify feature settings.
- Don't abort on device notifications with unexpected device numbers, just warn.
- Keep track of non-features so as not to ask device multiple times.
- Implement KEYBOARD DISABLE KEYS feature.
- Don't create notifications for DJ device activity reports.
- Update a few special keys and actions.
- Add keyed choice settings in configuration panel.
- Support remappable keys from reprogrammable keys v4 feature.
- Add setting class for keyed choice.
- Only check for features once per device.
- Use settings interface to show feature values in
solaar show
if no special code for feature. - Remove maximum window size.
- Process battery voltage notifications.
- Display battery voltage information in main window if regular battery information not available.
- Show next battery level where available.
- Update list of implemented features and provide information on how to implement features.
- Add c53d as a Lightspeed receiver.
- Add usage document
- Don't produce error dialog for inaccessible receivers with access control lists.
- Add option --battery-icons=symbolic to use symbolic icons if available.
- Update French translation
- Update installation documentation
- Remove packaging directory tree as it is not maintained
- Pip installs udev rule and solaar autostart when doing install without --user flag
- Use Solaar icon instead of a missing battery icon
- Use only standard icons for battery levels. Symbolic icons do not change to white in dark themes because of problems external to Solaar.
- Better reporting of battery levels when charging for some devices.
- Add information on K600 TV, M350 WIPD 4080, and MX Keys
- Remove assertion requiring receivers to still be in window when they are updated.
- Augment long description of Solaar showing up in repositories.
- Update installation directions.
- Install udev rule as well as autostart file when doing system install.
- Add support for Ayatana AppIndicator.
- Use setuptools icon directory on system installs when not using pip.
- Add receiver C517 and several older devices.
- Improved translations for polish.
- Bypass bug in appindicator when solaar is file in current directory.
- Don't check that device kind matches feature kind.
- Better determination of icons for battery levels.
- Use Ayatana AppIndicator if available.
- Improve error reporting when required system packages are not install.
- Better tooltip description
- Add release script to help when creating releases
- Look up tray icon filenames to get around a bug in libappindicator.
- Make the default behavior be to show the main window at startup.
- Support c537 nano receiver
- Add logind signals for suspend/resume.
- Remove solaar-gnome3 package
- Ignore features for devices that don't follow feature specification
- Add probe command to command-line interface to dump receiver registers
- Don't terminate on malformed or unknown messages
- Create fewer internal notifications for messages from devices
- Add a button to the main window to terminate (quit) Solaar
- Set up nano receivers as receivers with no unpairing and with re-pairing
- Set up c534 as receiver with max 2 pairings, no unpairing, re-pairing
- Better support receivers that do not unpair or when pairing replace existing pairings
- Add information about receiver pairing to receiver data structure
- Better support devices that only allow a limited number of total re-pairings
- Add --window option to control main window visibility and tray usage
- Ignore receiver if USB id is not retrieved
- Fix bug with double deleting when devices are disconnected
- Determine some receiver information from data structure for USB ids
- Treat battery level of 0 as unknown
- Fix bug on devices with no serial number
- Drop support for python2, and use python3 throughout
- Fix bug in remembering features discovered from device reports
- Show icons in main window device list
- Count offline devices when determining whether pairing is possible
- Update French, Dutch, German, and Croatian translations
- Better icons for battery levels
- Support DPI, Backlight 2, Battery Voltage features
- Support M585, M590, M330, MX Master 2s and 3, new M310, new K800, craft keyboard
- Documentation improvements
- Clean up directory structure and remove unused files
- Updated the repo url.
- Fixed typo which was crashing the application.
- Improved the HID write routine which was causing issues on some devices.
- Fix non-unifying receivers in Linux 5.2.
- Add new Lightspeed receiver (used in the G305)
- Too many to track...
- Merged solaar-cli functionality into main solaar.
- Scrolling over the systray icon switches between multiple peripherals.
- Swedish translation courtesy of Daniel Zippert and Emelie Snecker
- French translation courtesy of Papoteur, David Geiger and Damien Lallement.
- Fixed some untranslated strings.
- Added support for hand detection on the K800.
- Added support for V550 and V450 Nano.
- Fixed side-scrolling with the M705 Marathon.
- Fixed identification of the T650 Touchpad.
- Added internationalization support and romanian translation.
- Polish translation courtesy of Adrian Piotrowicz.
- When devices report a battery alert, only show the alert once.
- Make sure devices in the window tree are sorted by registration index.
- Added an autostart .desktop file.
- Replaced single-instance code with GtkApplication.
- Fixed identification of the M505 mouse.
- Fixed an occasional windowing layout bug with the C52F Nano Receiver.
- New single-window UI.
- Performance MX leds show the current battery charge.
- Support the VX Nano mouse.
- Faster and more accurate detection of devices.
- If upower is accessible through DBus, handle suspend/resume.
- Replaced Solaar icons with SVGs.
- Running solaar-cli in parallel with solaar is now less likely to cause issues.
- Bugfixes to saving and applying device settings.
- Properly handle ^C when running in console.
- Improved support for gnome-shell/Unity.
- Persist devices settings between runs.
- Fixed reading of MK700 keyboard battery status.
- Use battery icons from the current theme instead of custom ones.
- Debian/Ubuntu packages now depend on an icon theme, to make sure no missing icons appear in the application window.
- Fixed missing icons under Kubuntu.
- Many more bug-fixes and reliability improvements.
- Partial support for some Nano receivers.
- Improved support for some devices: M510, K800, Performance MX.
- Improved battery support for some HID++ 1.0 devices.
- Properly handle device loss on computer sleep/wake.
- Better handling of receiver adding and removal at runtime.
- Removed a few more unhelpful notifications.
- Incipient support for multiple connected receivers.
- More Python 3 fixes.
- Don't show the "device disconnected" notification, it can be annoying and not very useful.
- More robust detection of systray icon visibility.
- Ensure the Gtk application is single-instance.
- Fix identifying available dpi values.
- Fixed locating application icons when installed in a custom prefix.
- Fixed some icon names for the oxygen theme.
- Python 3 fixes.