mutter/src/org.gnome.Mutter.RemoteDesktop.xml
Pascal Nowack f363476229 remote-desktop: Allow using custom scroll source for NotifyPointerAxis
Currently, the NotifyPointerAxis method always assumes that the scroll
source is CLUTTER_SCROLL_SOURCE_FINGER.
This is however not always true and in some cases a remote desktop
client needs to submit a PointerAxis event with a custom axis step.
This is for example the case with high resolution mouse wheels, where
the NotifyPointerAxisDiscrete method is unsuitable.
In such cases NotifyPointerAxis needs to be called, but with the
intention that the scroll source is still a mouse wheel.

To solve this situation, don't assume the scroll source always to be
CLUTTER_SCROLL_SOURCE_FINGER.
Instead, add further flag options to NotifyPointerAxis, which allow a
remote desktop client to choose the scroll source.
This way a remote desktop client can choose what scroll source is the
most suitable one for the current scroll event.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1636>
2021-01-11 10:12:53 +01:00

201 lines
5.0 KiB
XML

<!DOCTYPE node PUBLIC
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
<node>
<!--
org.gnome.Mutter.RemoteDesktop:
@short_description: Remote desktop interface
This API is private and not intended to be used outside of the integrated
system that uses libmutter. No compatibility between versions are
promised.
-->
<interface name="org.gnome.Mutter.RemoteDesktop">
<!--
CreateSession:
@session_path: Path to the new session object
-->
<method name="CreateSession">
<arg name="session_path" type="o" direction="out" />
</method>
<!--
SupportedDeviceTypes:
@short_description: Bit mask of supported device types
Device types:
1: keyboard
2: pointer
4: touchscreen
-->
<property name="SupportedDeviceTypes" type="u" access="read" />
<!--
Version:
@short_description: API version
-->
<property name="Version" type="i" access="read" />
</interface>
<!--
org.gnome.Mutter.RemoteDesktop.Session:
@short_description: Remote desktop session
-->
<interface name="org.gnome.Mutter.RemoteDesktop.Session">
<!--
SessionId:
An identification string used for identifying a remote desktop session.
It can be used to associate screen cast sessions with a remote desktop session.
-->
<property name="SessionId" type="s" access="read" />
<!--
Start:
Start the remote desktop session
-->
<method name="Start" />
<!--
Stop:
Stop the remote desktop session
-->
<method name="Stop" />
<!--
Closed:
The session has closed.
A session doesn't have to have been started before it may be closed.
After it being closed, it can no longer be used.
-->
<signal name="Closed" />
<!--
NotifyKeyboardKeycode:
A key identified by a keysym was pressed or released
-->
<method name="NotifyKeyboardKeycode">
<arg name="keycode" type="u" direction="in" />
<arg name="state" type="b" direction="in" />
</method>
<!--
NotifyKeyboardKeysym:
A key identified by a keysym was pressed or released
-->
<method name="NotifyKeyboardKeysym">
<arg name="keysym" type="u" direction="in" />
<arg name="state" type="b" direction="in" />
</method>
<!--
NotifyPointerButton:
A pointer button was pressed or released
-->
<method name="NotifyPointerButton">
<arg name="button" type="i" direction="in" />
<arg name="state" type="b" direction="in" />
</method>
<!--
NotifyPointerAxis:
A smooth pointer axis event notification
Possible @flags:
1: finish - scroll motion was finished (e.g. fingers lifted)
2: source_wheel - The scroll event is originated by a mouse wheel.
4: source_finger - The scroll event is originated by one or more fingers on
the device (eg. touchpads).
8: source_continuous - The scroll event is originated by the motion of some
device (eg. a scroll button is set).
Maximum one of the @flags 'source_wheel', 'source_finger',
'source_continuous' may be specified.
If no source flag is specified, `source_finger` is assumed.
-->
<method name="NotifyPointerAxis">
<arg name="dx" type="d" direction="in" />
<arg name="dy" type="d" direction="in" />
<arg name="flags" type="u" direction="in" />
</method>
<!--
NotifyPointerAxisDiscrete:
A discrete pointer axis event notification
-->
<method name="NotifyPointerAxisDiscrete">
<arg name="axis" type="u" direction="in" />
<arg name="steps" type="i" direction="in" />
</method>
<!--
NotifyPointerMotionRelative:
A relative pointer motion event notification
-->
<method name="NotifyPointerMotionRelative">
<arg name="dx" type="d" direction="in" />
<arg name="dy" type="d" direction="in" />
</method>
<!--
NotifyPointerMotionAbsolute:
A absolute pointer motion event notification
-->
<method name="NotifyPointerMotionAbsolute">
<arg name="stream" type="s" direction="in" />
<arg name="x" type="d" direction="in" />
<arg name="y" type="d" direction="in" />
</method>
<!--
NotifyTouchDown:
A absolute pointer motion event notification
-->
<method name="NotifyTouchDown">
<arg name="stream" type="s" direction="in" />
<arg name="slot" type="u" direction="in" />
<arg name="x" type="d" direction="in" />
<arg name="y" type="d" direction="in" />
</method>
<!--
NotifyTouchMotion:
A absolute pointer motion event notification
-->
<method name="NotifyTouchMotion">
<arg name="stream" type="s" direction="in" />
<arg name="slot" type="u" direction="in" />
<arg name="x" type="d" direction="in" />
<arg name="y" type="d" direction="in" />
</method>
<!--
NotifyTouchUp:
A absolute pointer motion event notification
-->
<method name="NotifyTouchUp">
<arg name="slot" type="u" direction="in" />
</method>
</interface>
</node>