Add `accel-profile` configuration
Pointer devices should be able to configure *flat*, *adaptive* and *none* as acceleration profiles.
This commit is contained in:
parent
502e18bb38
commit
e967148e54
|
@ -14,6 +14,7 @@ struct hikari_pointer_config {
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
HIKARI_OPTION(accel, double);
|
HIKARI_OPTION(accel, double);
|
||||||
|
HIKARI_OPTION(accel_profile, enum libinput_config_accel_profile);
|
||||||
HIKARI_OPTION(disable_while_typing, enum libinput_config_dwt_state);
|
HIKARI_OPTION(disable_while_typing, enum libinput_config_dwt_state);
|
||||||
HIKARI_OPTION(middle_emulation, enum libinput_config_middle_emulation_state);
|
HIKARI_OPTION(middle_emulation, enum libinput_config_middle_emulation_state);
|
||||||
HIKARI_OPTION(natural_scrolling, bool);
|
HIKARI_OPTION(natural_scrolling, bool);
|
||||||
|
@ -36,6 +37,7 @@ hikari_pointer_config_merge(struct hikari_pointer_config *pointer_config,
|
||||||
struct hikari_pointer_config *default_config);
|
struct hikari_pointer_config *default_config);
|
||||||
|
|
||||||
HIKARI_OPTION_FUNS(pointer, accel, double)
|
HIKARI_OPTION_FUNS(pointer, accel, double)
|
||||||
|
HIKARI_OPTION_FUNS(pointer, accel_profile, enum libinput_config_accel_profile)
|
||||||
HIKARI_OPTION_FUNS(pointer, disable_while_typing, bool)
|
HIKARI_OPTION_FUNS(pointer, disable_while_typing, bool)
|
||||||
HIKARI_OPTION_FUNS(pointer, middle_emulation, bool);
|
HIKARI_OPTION_FUNS(pointer, middle_emulation, bool);
|
||||||
HIKARI_OPTION_FUNS(pointer, natural_scrolling, bool)
|
HIKARI_OPTION_FUNS(pointer, natural_scrolling, bool)
|
||||||
|
|
|
@ -964,6 +964,11 @@ are available.
|
||||||
Sets mouse acceleration for the pointer device to a value between **-1** and
|
Sets mouse acceleration for the pointer device to a value between **-1** and
|
||||||
**1**.
|
**1**.
|
||||||
|
|
||||||
|
* **accel-profile**
|
||||||
|
|
||||||
|
Sets mouse acceleration profile for the pointer device to the given mode.
|
||||||
|
Valid values are *none*, *flat* and *adaptive*.
|
||||||
|
|
||||||
* **disable-while-typing**
|
* **disable-while-typing**
|
||||||
|
|
||||||
Enable or disable *disable-while-typing* if available. This setting expects a
|
Enable or disable *disable-while-typing* if available. This setting expects a
|
||||||
|
|
|
@ -984,6 +984,32 @@ parse_pointer_config(struct hikari_pointer_config *pointer_config,
|
||||||
}
|
}
|
||||||
|
|
||||||
hikari_pointer_config_set_accel(pointer_config, accel);
|
hikari_pointer_config_set_accel(pointer_config, accel);
|
||||||
|
} else if (!strcmp(key, "accel-profile")) {
|
||||||
|
const char *accel_profile;
|
||||||
|
if (!ucl_object_tostring_safe(cur, &accel_profile)) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"configuration error: expected string \"%s\" for "
|
||||||
|
"\"accel-profile\"\n",
|
||||||
|
pointer_name);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(accel_profile, "none")) {
|
||||||
|
hikari_pointer_config_set_accel_profile(
|
||||||
|
pointer_config, LIBINPUT_CONFIG_ACCEL_PROFILE_NONE);
|
||||||
|
} else if (!strcmp(accel_profile, "flat")) {
|
||||||
|
hikari_pointer_config_set_accel_profile(
|
||||||
|
pointer_config, LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT);
|
||||||
|
} else if (!strcmp(accel_profile, "adaptive")) {
|
||||||
|
hikari_pointer_config_set_accel_profile(
|
||||||
|
pointer_config, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||||
|
} else {
|
||||||
|
fprintf(stderr,
|
||||||
|
"configuration error: unkown \"accel-profile\" \"%s\" for \"%s\"\n",
|
||||||
|
accel_profile,
|
||||||
|
pointer_name);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
} else if (!strcmp(key, "scroll-method")) {
|
} else if (!strcmp(key, "scroll-method")) {
|
||||||
const char *scroll_method;
|
const char *scroll_method;
|
||||||
if (!ucl_object_tostring_safe(cur, &scroll_method)) {
|
if (!ucl_object_tostring_safe(cur, &scroll_method)) {
|
||||||
|
|
|
@ -47,6 +47,11 @@ hikari_pointer_configure(struct hikari_pointer *pointer,
|
||||||
libinput_device, hikari_pointer_config_get_accel(pointer_config));
|
libinput_device, hikari_pointer_config_get_accel(pointer_config));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hikari_pointer_config_has_accel_profile(pointer_config)) {
|
||||||
|
libinput_device_config_accel_set_profile(libinput_device,
|
||||||
|
hikari_pointer_config_get_accel_profile(pointer_config));
|
||||||
|
}
|
||||||
|
|
||||||
if (hikari_pointer_config_has_scroll_button(pointer_config)) {
|
if (hikari_pointer_config_has_scroll_button(pointer_config)) {
|
||||||
libinput_device_config_scroll_set_button(libinput_device,
|
libinput_device_config_scroll_set_button(libinput_device,
|
||||||
hikari_pointer_config_get_scroll_button(pointer_config));
|
hikari_pointer_config_get_scroll_button(pointer_config));
|
||||||
|
|
|
@ -16,6 +16,8 @@ hikari_pointer_config_init(
|
||||||
strcpy(pointer_config->name, name);
|
strcpy(pointer_config->name, name);
|
||||||
|
|
||||||
hikari_pointer_config_init_accel(pointer_config, 0);
|
hikari_pointer_config_init_accel(pointer_config, 0);
|
||||||
|
hikari_pointer_config_init_accel_profile(
|
||||||
|
pointer_config, LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE);
|
||||||
hikari_pointer_config_init_disable_while_typing(pointer_config, false);
|
hikari_pointer_config_init_disable_while_typing(pointer_config, false);
|
||||||
hikari_pointer_config_init_middle_emulation(
|
hikari_pointer_config_init_middle_emulation(
|
||||||
pointer_config, LIBINPUT_CONFIG_MIDDLE_EMULATION_DISABLED);
|
pointer_config, LIBINPUT_CONFIG_MIDDLE_EMULATION_DISABLED);
|
||||||
|
@ -40,6 +42,7 @@ hikari_pointer_config_merge(struct hikari_pointer_config *pointer_config,
|
||||||
#define MERGE(option) \
|
#define MERGE(option) \
|
||||||
hikari_pointer_config_merge_##option(pointer_config, default_config);
|
hikari_pointer_config_merge_##option(pointer_config, default_config);
|
||||||
MERGE(accel);
|
MERGE(accel);
|
||||||
|
MERGE(accel_profile);
|
||||||
MERGE(disable_while_typing);
|
MERGE(disable_while_typing);
|
||||||
MERGE(middle_emulation);
|
MERGE(middle_emulation);
|
||||||
MERGE(natural_scrolling);
|
MERGE(natural_scrolling);
|
||||||
|
|
Loading…
Reference in New Issue