Commit Graph

899 Commits

Author SHA1 Message Date
MattHag ea0eb66f39 Refactor: Remove all GDK dependencies from hidapi package
The hidapi hardware layer must not know or depend on any UI libraries.
Removes all GDK dependencies from the hidapi packages, which makes
testing of these modules easier and removes unwanted cross-dependencies.

Related #2480
2024-09-15 09:18:51 -04:00
MattHag 70def31942 Refactor: Distinguish module from package
Adapt module names to easily distinguish them.

Related #2480
2024-09-15 09:18:51 -04:00
Peter F. Patel-Schneider fdd2c79950 settings: allow unkonwn keys in Key rule conditions 2024-08-28 10:40:23 -04:00
Peter F. Patel-Schneider 4578f5f6f1 device: cycle sw_id to better guard against duplication of messages 2024-08-23 19:41:10 -04:00
Peter F. Patel-Schneider c07c30baef device: handle error return on root feature 2024-08-23 19:41:10 -04:00
Peter F. Patel-Schneider d9d67ed738 device: handle unknown device kinds 2024-07-02 10:59:16 -04:00
Peter F. Patel-Schneider 3aa064b40f settings: finish change to new constants 2024-06-13 10:01:50 -04:00
MattHag 86b55b9c25 Introduce Enum BusID
Distinguishes Bluetooth and USB devices.
2024-06-03 08:37:02 -04:00
MattHag 7f5e156fa1 Introduce constant for Logitech vendor ID
The Vendor ID for Logitech is 0x46D = 1133.
2024-06-03 08:37:02 -04:00
MattHag d67466298b Introduce Enum for notification types 2024-06-03 08:37:02 -04:00
MattHag 9726b93a78 Improve base module
Use clearer names and type hints.
2024-06-03 08:37:02 -04:00
MattHag e316ed1bc2 Remove unnecessary receiver info 'hid_driver'
The same constant is used everywhere.
2024-06-03 08:37:02 -04:00
MattHag a5ded24057 Convert HIDPPNotification to dataclass
Replaces the very last namedtuple.
2024-06-03 08:37:02 -04:00
Peter F. Patel-Schneider 2113e63a75 device: be defensive when converting battery status to string 2024-06-03 08:33:11 -04:00
MattHag be83dac209
hid: Convert definition of HID registers to enum
* Refactor HID Register definitions

Use enums for distinct type hints, easy discovery of registers.
Make constants uppercase and benefit from enum auto-completion.

Related #2273

* Improve type hints: Registers
2024-06-02 10:34:00 -04:00
MattHag c23ebcd267 Use double quotes for module level docstrings
Make module level docstrings distinguishable from license text.

Related #2273
2024-06-02 09:54:21 -04:00
MattHag 5a63e44d58 Remove empty comment lines
Remove hashtags solely used for structuring.

Related #2273
2024-06-02 09:54:21 -04:00
MattHag c29231bc6b
refactor: Creation of devices (#2493)
* Refine interfaces for testability

* Reenable fixed device tests
2024-05-27 11:58:16 -04:00
MattHag 815dce07be Unify imports in logitech package
Related #2273
2024-05-23 16:42:18 -04:00
Peter F. Patel-Schneider 90b0db6c3b device: don't ping device when getting name or codename 2024-05-22 21:22:08 -04:00
Matthias Hagmann c9dc232951 Refactor: Use dataclasses and enums
Replace unnecessary NamedInts in favour of default data types.
Simplify interfaces by reducing possible input from strings to members
of an enum.
2024-05-22 21:14:41 -04:00
Matthias Hagmann 469c04faaf Introduce Device protocol and type hints 2024-05-22 21:14:41 -04:00
Matthias Hagmann 193dbfda21 hidpp10: Move independent functions to module level 2024-05-22 21:14:41 -04:00
MattHag 500b9998c5
Fix macOS compatibility and reenable CI tests
* Fix CI for macOS

* Fix error message for missing hidapi

* Skip some device and receiver tests on macOS

Tests fail on macOS, enable them when unit tests are
refined to only test the module without dependencies.

* Safe guard dbus import
2024-05-22 18:45:40 -04:00
Peter F. Patel-Schneider 1dfc4bdb1c settings: add choices universe for backlight setting 2024-05-08 08:05:00 -04:00
MattHag 1d5b61fbf2 diversion: Simplify and type hint
- Make static method an easy testable function.
- Fix variable name clashes
2024-05-05 10:43:39 -04:00
Peter F. Patel-Schneider 3ffa4e30f1 settings: get and use current host number for K375sFnSwap because of bug in firmware of MX Keys S 2024-05-04 04:46:27 -04:00
Peter F. Patel-Schneider da1cb53c1b settings: optimize write for per-key lighting 2024-05-03 11:54:24 -04:00
Peter F. Patel-Schneider e5967edc66 settings: add and initialize per-key lighting to a special no-change value 2024-05-03 11:54:24 -04:00
MattHag 959dd2a35b
Refactor rule loading for testability (#2456)
rules: Introduce tests for YAML rule loading functionality.
2024-04-27 17:56:27 -04:00
Peter F. Patel-Schneider 932bc5cb0e device: check for existences of keys file before opening 2024-04-21 17:37:10 -04:00
MistificaT0r 4225fce8d7
po: update Russion translation and have all strings translated
* update Russian translation

* Fixed translation display in GUI

* fix checks / Fixed translation display in GUI
2024-04-21 11:36:39 -04:00
Peter F. Patel-Schneider cf038fd982 settings: improve label and description for LED zone settings 2024-04-19 16:05:29 -04:00
Peter F. Patel-Schneider 7bef5c046c settings: add message about Onboard Profiles to LED Zone settings 2024-04-19 16:05:29 -04:00
Peter F. Patel-Schneider c4e2a5683a device: initialize device registers to empty list 2024-04-19 16:05:29 -04:00
Peter F. Patel-Schneider e667d41c7b solaar: use bluez dbus signals to disconnect and connect bluetooth devices 2024-04-18 20:32:40 -04:00
Peter F. Patel-Schneider d7ce636917 device: handle a different signal for onboard profiles directory in ROM 2024-04-15 14:40:50 -04:00
Peter F. Patel-Schneider 86bab897d1 receiver: introduce small delay in getting pairing information to let receiver settle after pairing 2024-04-15 14:40:50 -04:00
Peter F. Patel-Schneider b616419f72 device: fix bug found in testing 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider 269e970aa6 device: fix small bugs uncovered by testing 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider d6499808f9 device: fix bugs in onboard profiles found during testing 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider 3855409605 device: fix bugs in hidpp20 found during testing 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider d12575b47d tests: test GESTURES settings 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider e64eec18e9 tests: extend testing of hidpp20 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider b43cdace79 tests: expand tests for settings_templates 2024-04-09 10:31:06 -04:00
Peter F. Patel-Schneider 8de3a1d2e2 device: better support for extended ajustable dpi 2024-04-09 10:31:06 -04:00
Peter F. Patel-Schneider ab94f1be07 device: limited support for extended adjustable dpi 2024-04-09 10:31:06 -04:00
Peter F. Patel-Schneider c70e8b54bf tests: remove unused code 2024-03-27 18:02:55 -04:00
Peter F. Patel-Schneider afe04b9804 settings: remove unused code and fix but in EQUALIZER setting 2024-03-27 11:15:15 -04:00
Peter F. Patel-Schneider f38fbcf949 settings: provide symbolic names for per-key lighting keys 2024-03-27 11:15:15 -04:00
Peter F. Patel-Schneider 4d0f93b35c tests: improve infrastructure for testing setting_templates 2024-03-27 11:15:15 -04:00
Peter F. Patel-Schneider 1ed5f765e3 settings: implement and test per-key lighting 2024-03-27 11:15:15 -04:00
Peter F. Patel-Schneider bd437b548b ui: refactor pair_window 2024-03-25 09:13:22 -04:00
Peter F. Patel-Schneider 8ee291c144 settings: add in bit telling RGB effects changes to change ROM 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider 1a874c39d7 settings: permit continuing when a read during pushing fails 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider e202e904b4 settings: add settings for RGB EFFECTS feature 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider c8288a6b69 settings: fix bug in LEDZoneSetting when effect is not implemented 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider c81809bd39 device: add RGB EFFECTS feature version of LED COLOR EFFECTS data 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider 490493d7a3 device: handle BRIGHTNESS CONTROL notifications 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider 3876f07d57 settings: implement and test BRIGHTNESS_CONTROL 2024-03-24 15:44:15 -04:00
Peter F. Patel-Schneider 4fd75a64ff settings: fix small bugs found from testing 2024-03-24 07:02:39 -04:00
Matthias Hagmann 6f613b17c7 refactor: Manually improve f-string formatting 2024-03-24 07:01:56 -04:00
Matthias Hagmann 4e6361429e refactor: Use f-strings for more exceptions and log message
Semi manually convert remaining strings with no translation to f-string.
2024-03-24 07:01:56 -04:00
Peter F. Patel-Schneider d1d3d71091 settings: patch to make python 3.7 happy 2024-03-23 10:11:30 -04:00
Peter F. Patel-Schneider 17bbc9c4ea settings: simple change to improve testability 2024-03-23 10:11:30 -04:00
Peter F. Patel-Schneider 47ba1402ed device: use feature_request from the device everywhere in hidpp20 2024-03-23 10:11:30 -04:00
Peter F. Patel-Schneider 7d6428a03b settings: fix bug in backlight 2 durations 2024-03-23 10:11:30 -04:00
Peter F. Patel-Schneider ebc76bca24 tests: add tests for logitech_receiver device 2024-03-23 08:26:12 -04:00
Peter F. Patel-Schneider 480badbe8c device: align init methods for all receiver classes 2024-03-16 16:24:33 -04:00
Peter F. Patel-Schneider 6164317a64 tests: improve hidpp20 coverage 2024-03-16 16:20:39 -04:00
Peter F. Patel-Schneider dcd72b0178 device: fix bug in hidpp10 get_device_features 2024-03-16 16:20:39 -04:00
Peter F. Patel-Schneider 154dd7017f rules: allow sub-second delays in Later 2024-03-14 17:08:47 -04:00
Peter F. Patel-Schneider 4e4275c281 device: remove unreachable code 2024-03-14 17:08:47 -04:00
Peter F. Patel-Schneider d76eed85f6 device: fix bug in setting configuration cookie due to bad documentation 2024-03-14 17:06:17 -04:00
Matthias Hagmann 5b09ace1f5 ruff: Apply single line import format
# Usage
pre-commit run --all-files

Related #2295
2024-03-13 15:41:21 -04:00
Matthias Hagmann e92f1a8a0b Automatically upgrade strings to f-string
Used flynt to convert strings to f-strings, where safely possible.

Usage:
flynt .

Related #2372
2024-03-13 11:02:50 -04:00
Peter F. Patel-Schneider b957217ea8 receiver: delay device sending first messages 2024-03-13 08:34:28 -04:00
Peter F. Patel-Schneider 4a89a79a4d device: remove checks for status attributes 2024-03-12 13:11:49 -04:00
Peter F. Patel-Schneider dfd3d10c2e device: optimize some functions in FeaturesArray 2024-03-12 12:21:17 -04:00
Peter F. Patel-Schneider 0b599194d1 device: fix bug in creating features array 2024-03-11 15:20:39 -04:00
Peter F. Patel-Schneider 24223e77c7 device: fix bug in getting friendly name 2024-03-11 08:23:27 -04:00
Peter F. Patel-Schneider 9c5ba6445e device: remove status from Device and Receiver 2024-03-11 08:23:27 -04:00
Peter F. Patel-Schneider a1418cd834 device: move changed method from status to Device and Receiver 2024-03-11 08:23:27 -04:00
Peter F. Patel-Schneider 1fe2eab1a4 device: move link_encrypted from status to Device 2024-03-11 08:23:27 -04:00
Peter F. Patel-Schneider 15d425c365 device: move battery information from status to Device 2024-03-11 08:23:27 -04:00
Peter F. Patel-Schneider 0805ecb511 device: move status string function to Device and Receiver 2024-03-11 08:23:27 -04:00
Peter F. Patel-Schneider 87285faf7f receiver: move pairing status to new dataclass attached to receiver 2024-03-11 08:23:27 -04:00
MattHag 0d225f6cb1
test: Test base product information
* test: Test base product information

Related #1097

* Fix dependencies for gi
2024-03-10 10:11:02 -04:00
Matthias Hagmann 7ec3eddccc test: Extract get_kind_from_index function and test it
Pull get_kind_from_index from class to module level and add tests.

Related #1097
2024-03-10 09:20:39 -04:00
Peter F. Patel-Schneider 523628926b device: use Python 3.7 type hints 2024-03-09 10:36:40 -05:00
Peter F. Patel-Schneider 135c8b8cb9 device: use status attribute for error 2024-03-09 10:36:40 -05:00
Peter F. Patel-Schneider 8154cd759f device: use status attribute for notification_flags 2024-03-09 10:36:40 -05:00
Peter F. Patel-Schneider 6b3f09aa5d device: use status attribute for link_encrypted 2024-03-09 10:36:40 -05:00
Peter F. Patel-Schneider 64d8cad81a device: change status battery fields to Battery objects 2024-03-09 10:36:40 -05:00
Peter F. Patel-Schneider 3916c189be receiver: move more method code to subclasses 2024-03-08 15:39:12 -05:00
Matthias Hagmann 4eb5a83326 receiver: create subclasses of receiver for different variants
Related #2350
2024-03-08 15:39:12 -05:00
Peter F. Patel-Schneider 51ef2a7fe2 device: add missing receiver type for Lightspeed receivers 2024-03-03 15:14:20 -05:00
Peter F. Patel-Schneider de8fe3685d device: add new device types 2024-03-03 15:14:20 -05:00
Matthias Hagmann c3b6802373 refactor: Get receiver product info before instantiation
Related #2350
2024-03-03 10:38:46 -05:00
Matthias Hagmann 8f6e8eef4c Refactor: Move Device instantiation to factory class
Related #2273
2024-03-03 09:32:42 -05:00
Matthias Hagmann 51e44052b0 Refactor: Move Receiver instantiation to factory class
Related #2350
2024-03-03 09:32:42 -05:00
Matthias Hagmann 7d127ff068 fix: Use exception from exception module 2024-03-02 12:25:13 -05:00
Matthias Hagmann fb9dbb9c39 update: Replace legacy logger.warn with logger.warning
Related #1097
2024-03-02 10:56:41 -05:00
Matthias Hagmann d4702f0bf0 cleanup: Remove duplicated code to read register
Related #1097
2024-03-02 10:56:41 -05:00
Matthias Hagmann a29f2b8614 tests: Add hidpp10 tests
Related #1097
2024-03-02 10:56:41 -05:00
Matthias Hagmann 9c76a6c5ba refactor: Introduce Hidpp20 class
Related #1097
2024-03-02 10:56:41 -05:00
Matthias Hagmann 85149a809e refactor: Introduce Hidpp10 class
Related #1097
2024-03-02 10:56:41 -05:00
MattHag 574a95da50
cleanup: Remove unnecessary calls of del
Related #2273
2024-03-02 10:48:06 -05:00
Peter F. Patel-Schneider ad0f9ec712 settings: fix bug when reading BACKLIGHT setting from device 2024-03-02 09:22:57 -05:00
Matthias Hagmann 7ef3059b69 clean up: Remove editor specific marks
Related #2273
2024-02-29 10:10:46 -05:00
Matthias Hagmann e53b5380a3 fix: Replace invalid hidpp20 usage
Related #1097
2024-02-28 17:41:46 -05:00
Matthias Hagmann c3b01bffae fix: Replace invalid hidpp10 usage
Related #1097
2024-02-28 17:41:46 -05:00
Peter F. Patel-Schneider 67be689866 device: reorder code in settings 2024-02-25 07:23:03 -05:00
Peter F. Patel-Schneider 20c4d64d17 device: add missing license blocks 2024-02-23 11:37:23 -05:00
Peter F. Patel-Schneider b7afc410ba device: clean up listener and notifications code 2024-02-23 11:37:23 -05:00
Peter F. Patel-Schneider 8744506259 solaar: add locks to prevent multiple persisters for device 2024-02-23 08:40:16 -05:00
Peter F. Patel-Schneider 3954bbd111 solaar: clean up configuration code 2024-02-23 08:40:16 -05:00
Peter F. Patel-Schneider ce2de71b1b device: clean up device and receiver code 2024-02-22 09:57:02 -05:00
Peter F. Patel-Schneider 646ef2f596 device: move battery constants common to HID++ 1.0 and 2.0 to common 2024-02-22 09:57:02 -05:00
Peter F. Patel-Schneider 24ae9bacaa device: move mapping of device kind into hidpp20 2024-02-22 09:57:02 -05:00
Peter F. Patel-Schneider 4b33c119f6 device: move pairing information gathering to receiver 2024-02-22 09:57:02 -05:00
Peter F. Patel-Schneider fc8628c9c5 solaar: fix debugging levels 2024-02-21 16:06:22 -05:00
Peter F. Patel-Schneider 353c2dfb2f device: expand allowable profile numbers 2024-02-21 16:06:22 -05:00
Peter F. Patel-Schneider 8e44c08139 device: clean up __init__ in logitech_receiver 2024-02-21 16:06:22 -05:00
Peter F. Patel-Schneider 68b62a9ee4 device: fix bug in hidpp20 get host names 2024-02-21 16:04:32 -05:00
Peter F. Patel-Schneider af7806ed00 device: fix typo 2024-02-21 16:04:32 -05:00
Matthias Hagmann 04e709b00a Remove yapf exclusions
Related #2295
2024-02-20 15:41:10 -05:00
Matthias Hagmann eb937fcc3a Manually fix linter issues
Related #2295
2024-02-20 15:41:10 -05:00
Matthias Hagmann 7774569971 Apply ruff format
Run ruff auto formatting using:
ruff format .

Related #2295
2024-02-20 15:41:10 -05:00
Peter F. Patel-Schneider ce00a78e7f rules: fix bug in Set action 2024-02-20 11:16:40 -05:00
Peter F. Patel-Schneider 3f692c0fe2 device: add notify module to logitech_receiver 2024-02-20 08:35:19 -05:00
Peter F. Patel-Schneider 6f633efac5 ui: implement setting_changed callback and pass in to new devices and receivers 2024-02-20 06:19:23 -05:00
Peter F. Patel-Schneider ed248c62b9 device: add callback to call when changing a setting 2024-02-20 06:19:23 -05:00
Peter F. Patel-Schneider 476f41f8ae logitech_receiver: style fixes 2024-02-20 05:58:33 -05:00
Matthias Hagmann 5f487dd3b2 logitech_receiver: Move hidpp20 constants into new module
Related #1097
2024-02-20 05:58:33 -05:00
Matthias Hagmann 2fcab65486 logitech_receiver: Move hidpp10 constants into new module
Related #1097
2024-02-20 05:58:33 -05:00
Matthias Hagmann e8fdbeee8e logitech_receiver: Move exceptions into own module
Related #1097
2024-02-20 05:58:33 -05:00
Peter F. Patel-Schneider fa9494435b device: streamline status code 2024-02-19 09:18:08 -05:00
Peter F. Patel-Schneider 20a76fb4d3 device: improve features array 2024-02-18 08:21:09 -05:00
Peter F. Patel-Schneider 12de240949 device: improve imports in logitech_receiver
device: move imports of ui modules to beginning of files

logitech_receiver: remove imports from __init__.py
2024-02-18 06:21:35 -05:00
Peter F. Patel-Schneider d1c899d6da solaar: improve imports and guard Gtk, etc imports with correct version
solaar: move imports to top of files

solaar: move more imports to top of files

solaar: guard Gtk, etc imports with correct version
2024-02-18 06:21:35 -05:00
Peter F. Patel-Schneider 31d795fcb8 device: improve imports in logitech_receiver
device: move some imports to top of modules

device: break up imports loop with device descriptors

device: break up imports loop by moving a function from notifications.py to setting_templates.py

device: break import loop between device.py and diversion.py by using device to access method
2024-02-18 06:21:35 -05:00
Peter F. Patel-Schneider 0f0de28e94 device: correctly handle profile button with no action 2024-02-10 14:45:00 -05:00
Peter F. Patel-Schneider 468fad1358 ui: refactor code to record change to setting 2024-02-10 14:45:00 -05:00
MattHag 87658fb189
logging: Simplify logger instantiation
* logging: Simplify logger instantiation

Relates #2254

* logging: Remove aliases

Relates #2254

* logging: Replace deprecated warn with warning

Related #2254

* logging: Fix mistake

Related #2257
2024-02-10 13:55:27 -05:00
Peter F. Patel-Schneider 8b1463c8f4 ui: update label and tooltip for divert-gkeys setting 2024-02-10 09:15:27 -05:00
Peter F. Patel-Schneider 26e0153fce ui: update label and tooltip for divert-gkeys setting 2024-02-10 09:15:27 -05:00
Peter F. Patel-Schneider c8fc6990b5 device: remove dependency on webcolors 2024-02-09 13:45:41 -05:00
Peter F. Patel-Schneider 23517048d4 device: clean up data for LED effects 2024-02-09 08:36:36 -05:00
Peter F. Patel-Schneider 7c441cc652 ui: better startup behavior for LED effect settings 2024-02-09 08:36:36 -05:00