backends/native: Fix handling of trackball settings
The org.gnome.desktop.peripherals.trackball.scroll-wheel-emulation-button setting contains buttons X11-style. Work out the BTN evcode that applies to it when applying the setting on the libinput device. https://bugzilla.gnome.org/show_bug.cgi?id=787804
This commit is contained in:
parent
91e3a0b3a9
commit
c71faffb71
@ -245,16 +245,33 @@ meta_input_settings_native_set_scroll_button (MetaInputSettings *settings,
|
|||||||
guint button)
|
guint button)
|
||||||
{
|
{
|
||||||
struct libinput_device *libinput_device;
|
struct libinput_device *libinput_device;
|
||||||
|
enum libinput_config_scroll_method method;
|
||||||
|
guint evcode;
|
||||||
|
|
||||||
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
|
libinput_device = clutter_evdev_input_device_get_libinput_device (device);
|
||||||
if (!libinput_device)
|
if (!libinput_device)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!device_set_scroll_method (libinput_device,
|
if (button == 0)
|
||||||
LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN))
|
{
|
||||||
|
method = LIBINPUT_CONFIG_SCROLL_NO_SCROLL;
|
||||||
|
evcode = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Compensate for X11 scroll buttons */
|
||||||
|
if (button > 7)
|
||||||
|
button -= 4;
|
||||||
|
|
||||||
|
/* Button is 1-indexed */
|
||||||
|
evcode = (BTN_LEFT - 1) + button;
|
||||||
|
method = LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!device_set_scroll_method (libinput_device, method))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
libinput_device_config_scroll_set_button (libinput_device, button);
|
libinput_device_config_scroll_set_button (libinput_device, evcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user