hidpp20: allow setting a default buttons count

PR #1212
This commit is contained in:
Tayllan
2021-10-16 16:08:44 -03:00
committed by GitHub
parent 514ce5419f
commit aef92645b7
4 changed files with 24 additions and 1 deletions

View File

@@ -168,7 +168,7 @@ def check_section_hidpp10(section):
def check_section_hidpp20(section):
permitted = ['DeviceIndex', 'Leds', 'ReportRate', 'Quirk']
permitted = ['Buttons', 'DeviceIndex', 'Leds', 'ReportRate', 'Quirk']
for key in section.keys():
assertIn(key, permitted)

View File

@@ -1642,6 +1642,10 @@ hidpp20drv_init_device(struct ratbag_device *device,
if (num >= 0)
drv_data->num_leds = num;
num = ratbag_device_data_hidpp20_get_button_count(device->data);
if (num >= 0)
drv_data->num_buttons = num;
drv_data->report_rates[0] = ratbag_device_data_hidpp20_get_report_rate(device->data);;
ratbag_device_init_profiles(device,

View File

@@ -65,6 +65,7 @@ struct data_hidpp20 {
enum hidpp20_quirk quirk;
int led_count;
int report_rate;
int button_count;
};
struct data_hidpp10 {
@@ -167,6 +168,13 @@ init_data_hidpp20(struct ratbag *ratbag,
data->hidpp20.index = -1;
data->hidpp20.led_count = -1;
num = g_key_file_get_integer(keyfile, group, "Buttons", &error);
if (num > 0 || !error)
data->hidpp20.button_count = num;
if (error)
g_error_free(error);
error = NULL;
num = g_key_file_get_integer(keyfile, group, "DeviceIndex", &error);
if (num != 0 || !error)
data->hidpp20.index = num;
@@ -599,6 +607,14 @@ ratbag_device_data_hidpp20_get_index(const struct ratbag_device_data *data)
return data->hidpp20.index;
}
int
ratbag_device_data_hidpp20_get_button_count(const struct ratbag_device_data *data)
{
assert(data->drivertype == HIDPP20);
return data->hidpp20.button_count;
}
int
ratbag_device_data_hidpp20_get_led_count(const struct ratbag_device_data *data)
{

View File

@@ -80,6 +80,9 @@ ratbag_device_data_hidpp10_get_led_count(const struct ratbag_device_data *data);
int
ratbag_device_data_hidpp20_get_index(const struct ratbag_device_data *data);
int
ratbag_device_data_hidpp20_get_button_count(const struct ratbag_device_data *data);
int
ratbag_device_data_hidpp20_get_led_count(const struct ratbag_device_data *data);