1
0
forked from drath/libratbag
Commit Graph

41 Commits

Author SHA1 Message Date
Yaroslav Chvanov
217847adde steelseries: only write report rate if it's dirty 2022-02-11 14:32:14 +10:00
Yaroslav Chvanov
c12edcd4c7 steelseries: fix length of LED cycle output report being incorrect
It probably meant to use the macro directly, not `sizeof` of it (which
made it be 4 instead of 64).
2022-02-11 14:31:37 +10:00
Rafael Silva
ae53f6123b ibratbag-hidraw: add optional filter to hidraw read
Currently, these functions will read and timeout after 1s if
no packets were received. The issue with this is that a lot of times we
may catch unrelated packets, such as mouse or keyboard changes.
To solve this, this patch adds a new optional filter argument, when a filter
is passed the functions now will keep reading packets until a valid packet is found.
The filter argument is user written function that returns true or false.

Co-authored-by: Filipe Laíns <lains@riseup.net>
Signed-off-by: Rafael Silva <perigoso@riseup.net>
2022-02-04 14:27:08 +10:00
Ilya Guterman
2c83f9c3ef add static assert 2021-11-04 03:36:41 +02:00
Ilya Guterman
b71f439ed6 fix ci failures 2021-11-04 03:36:41 +02:00
Ilya Guterman
dff102be43 steelseries: prefix hidraw writes with 0 2021-11-04 03:36:41 +02:00
staticssleever668
2a0a3cf203 steelseries: add support for changing LEDs on Rival 100 2021-10-16 19:31:11 +01:00
staticssleever668
724d31c8fe steelseries: make settings unique to SteelSeries Sensei RAW a quirk 2021-10-16 19:31:11 +01:00
Kristian Klausen
9732aa009e steelseries: only use the HID vendor device
Rival mice are composite devices with multiple HID devices and only the
HID vendor device can be used to configure the device.

Tested with a SteelSeries Rival 300 (1038:1710).

Fix #888
2021-10-10 21:10:20 +01:00
staticssleever668
37ae638a7c steelseries: improve v1 LED breathing duration configuration
SteelSeries mice using V1 driver don't support changing LED breathing
duration precisely, so it was always locked on 5 seconds. Now we try to
match desired duration with factory preset values: 3, 5 and 7 seconds.
2021-07-24 22:05:49 +01:00
staticssleever668
8d7cbcba4f steelseries: fix report rate changing for version 1 devices
Judging by rivalcfg's data for Sensei Raw, Rival 100, Rival (300) and Kinzu v2 (all are version 1 devices in our data), it should have been like that from the beginning.
Confirmed on Rival 100.
2021-07-24 22:04:14 +01:00
Filipe Laíns
df5742ebfe libratbag-util: move data manipulation functions out of hidpp-generic
Signed-off-by: Filipe Laíns <lains@archlinux.org>
2019-07-24 19:17:21 +10:00
FFY00
2eed8dbb92 steelseries: only print firmware version on successful read 2019-05-28 07:57:22 +10:00
FFY00
a13ee32c61 steelseries: fix bug where we were wrongly dellocating dpi_{range,list}
_cleanup_ is deallocating the pointer returned by
ratbag_device_data_steelseries_get_dpi_{range,list}(). Deallocating
dpi_list results in a wrong step value, and a wrong step value then
results in a wrong step count when we try to set the dpi.

Fixes #436 and #702
2019-05-27 00:25:39 +01:00
FFY00
55f7d75567 steelseries: fix regression in v2 led
Fixes #683
2019-04-09 12:16:48 +01:00
Peter Hutterer
bf127d4c68 Move the ReportRate into the profile
We don't have mice that can do report rates per resolutions, so let's not
commit to that.

This is a DBus API break but also a break in ratbagd, piper will need to
update to fetch the rate/rates from the profile object now.

It's a ratbagctl break as well, ratbagctl info changes slightly and the
resolution is not argument anymore for the rate.

Fixes #645

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-27 11:31:59 +10:00
Peter Hutterer
014212bbd9 Move the query-configuration to the profile, rename to write-only
This is arguably a profile-specific thing since the device itself is static
(we still know button numbers, etc.), we just don't know the content of each
profile.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-22 16:21:00 +10:00
Peter Hutterer
3fcf13b58e Drop the superflous device capabilities
If we have a profiles/resolution/button/led, we can write to it. That is the
default assumption and where we don't have write-access to those, we should
simply not expose them.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-22 16:21:00 +10:00
Peter Hutterer
55fd6c7a71 Drop the button key/macro device capability
The same information is supposed to be available in the button's action types

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-02-22 16:21:00 +10:00
Erol Gorancic
44c4b901e2 Steelseries Rival 600 Support.
- New svg and device file. Updated meson.build.
- New device version (version 3).
- Refactored led cycle to be general for v2 and v3.
- New defines for v3.
2018-11-26 01:27:17 +00:00
FFY00
363eab80f0 steelseries: implement cycle struct 2018-09-01 22:49:32 +02:00
Thomas Hindoe Paaboel Andersen
fff3589a20 steelseries: read settings from device
Open an extra hidraw to read current onboard settings.

Initially DPI and static LED color can be read from the rival
310. Other data/devices can be added as the protocol is better
understood.

The protocol used to extract the data seems to be both device
and firmware version specific. To be able to switch on both
cases we now store the firmware information in the drv_data.

Signed-off-by: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
2018-08-30 15:49:48 +10:00
Stephen Dawkins
d8c7050f6f disabled macros for steelseries if short_button is set 2018-07-01 21:02:40 +02:00
Stephen Dawkins
49770a22e7 added support for steelseries sensei raw 2018-07-01 21:02:40 +02:00
FFY00
fa57b417e9 steelseries: add dirty dpi check 2018-04-06 15:34:59 +02:00
FFY00
1aec9c0f54 steelseries: check button dirty flag when setting profile 2018-03-28 15:40:36 +02:00
Thomas Hindoe Paaboel Andersen
d1918a063c steelseries: sleep between messages
Adding the sleep makes the writes to the device more
reliable.
2018-03-26 21:55:55 +02:00
Thomas Hindoe Paaboel Andersen
1243d5bb13 steelseries: use macros for key+modifiers 2018-02-22 11:08:46 +01:00
Thomas Hindoe Paaboel Andersen
3da2630158 .device: add MacroLength for steelseries
Adds a setting to specify the max length of key press macros that the
device supports.

Setting MacroLength to 1 means that the device supports normal key presses,
(key + modifiers) but not multi key press macros.

0 can be used to indicate that buttons cannot be set as keys at all.
2018-02-16 09:13:58 +10:00
Thomas Hindoe Paaboel Andersen
e02d0724a3 steelseries: set LED capabilities
The Rival and earlier versions did not support cycle mode on the device.
2018-02-15 09:48:22 +10:00
Thomas Hindoe Paaboel Andersen
920fb3917f steelseries: support the original Rival
Initial support for the original Rival mouse.
Setting resolutions, report rate and LED color and
modes.

No key mappings yet, and breathing duration is fixed.
2018-02-14 14:45:24 +10:00
Thomas Hindoe Paaboel Andersen
f36b2dbce9 steelseries: default resolutions to 800/1600
The steelseries mice have 2 resolutions. The range/interval
is different per device. We cannot query the devices, so we
have to pick some defaults. Before we took the two first in
the list to be safe. It is a pretty bad default though. Using
800 and 1600 is supported by all known devices and seem as
more reasonable defaults.
2018-02-14 14:41:19 +10:00
Thomas Hindoe Paaboel Andersen
ef7e6f6db5 steelseries: correct use of return code
ratbag_hidraw_output_report returns 0 on success, not the number of bytes
written.
2018-02-12 12:03:23 +10:00
Thomas Hindoe Paaboel Andersen
8063385d03 steelseries: default button mapping for sensei 310
The default button mapping the sensei 310 does not match
the table for the two known steelseries mice. The 6th button
is no longer resolution cycle, so the single table no longer
fits. Let's construct the table depending on the number of
buttons on the device.
2018-02-07 01:18:20 +01:00
Thomas Hindoe Paaboel Andersen
0f5beb619e steelseries: support cycle and breathing LED mode
To specify the colors to cycle trough we write a list of
colors and their individual share of the total cycle duration.

Solid colors only have a single color in their list.

Breathing mode will cycle to and from the picked color and black.

Cycle mode will cycle through red, green, and blue.
2017-11-27 08:54:06 +10:00
Thomas Hindoe Paaboel Andersen
fd27957b57 steelseries: add a support for the Kinzu V2 2017-11-22 14:35:09 +10:00
Thomas Hindoe Paaboel Andersen
554ee88c86 steelseries: move hardcoded values to .device
The steelseries driver used some hardcoded values for as the
only supported device was the rival 310. This moves that data
to the .device file.

The default resolutions used are changed from hardcoded 1000
and 2000, to the two first entries in the dpi list. Picking
actual values from the specified dpi list or range is safer.
2017-11-22 14:35:09 +10:00
Thomas Hindoe Paaboel Andersen
113bd4859e steelseries: add writing buttons 2017-10-27 08:35:10 +10:00
Thomas Hindoe Paaboel Andersen
2a2b7487d4 steelseries: init the buttons to defaults 2017-10-26 10:25:56 +10:00
Thomas Hindoe Paaboel Andersen
2b4022dcbf steelseries: set report rate list 2017-10-26 10:25:56 +10:00
Thomas Hindoe Paaboel Andersen
575b7bce98 add driver and svg for steelseries rival 310
The driver does not yet support button mappings or any
non-solid LED modes.

The device does not support reading out the current
configuration. On probe some default values are used
to get a usable profile.
2017-10-18 00:19:12 +02:00