diff --git a/gestures.js b/gestures.js index f827027..f21e718 100644 --- a/gestures.js +++ b/gestures.js @@ -39,11 +39,17 @@ var time; var vState; var navigator; var direction = undefined; +// 1 is natural scrolling, -1 is unnatural +var natural = 1; function enable() { // Touchpad swipes only works in Wayland if (!Meta.is_wayland_compositor()) return; + var touchpadSettings = new Gio.Settings({ + schema_id: 'org.gnome.desktop.peripherals.touchpad' + }); + signals.destroy(); /** In order for the space.background actors to get any input we need to hide @@ -75,12 +81,13 @@ function enable() { } } if (direction === DIRECTIONS.Vertical) { - updateVertical(-dy*prefs.swipe_sensitivity[1], event.get_time()); + updateVertical(-dy*natural*prefs.swipe_sensitivity[1], event.get_time()); return Clutter.EVENT_STOP; } return Clutter.EVENT_PROPAGATE; case Clutter.TouchpadGesturePhase.BEGIN: time = event.get_time(); + natural = touchpadSettings.get_boolean("natural-scroll") ? 1 : -1; direction = undefined; navigator = Navigator.getNavigator(); navigator.connect('destroy', () => { @@ -126,7 +133,7 @@ function horizontalScroll(actor, event) { Tweener.removeTweens(this.cloneContainer); direction = DIRECTIONS.Horizontal; } - return update(this, -dx*prefs.swipe_sensitivity[0], event.get_time()); + return update(this, -dx*natural*prefs.swipe_sensitivity[0], event.get_time()); case Clutter.TouchpadGesturePhase.CANCEL: case Clutter.TouchpadGesturePhase.END: this.hState = phase;