initial commit
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="river_input_management_v1">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: © 2025 Isaac Freund
|
||||
SPDX-License-Identifier: MIT
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
<description summary="manage seats and input devices">
|
||||
This protocol supports creating/destroying seats, assigning input devices to
|
||||
seats, and configuring input devices (e.g. setting keyboard repeat rate).
|
||||
|
||||
The key words "must", "must not", "required", "shall", "shall not",
|
||||
"should", "should not", "recommended", "may", and "optional" in this
|
||||
document are to be interpreted as described in IETF RFC 2119.
|
||||
</description>
|
||||
|
||||
<interface name="river_input_manager_v1" version="1">
|
||||
<description summary="input manager global interface">
|
||||
Input manager global interface.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_destroy" value="0"/>
|
||||
</enum>
|
||||
|
||||
<request name="stop">
|
||||
<description summary="stop sending events">
|
||||
This request indicates that the client no longer wishes to receive
|
||||
events on this object.
|
||||
|
||||
The Wayland protocol is asynchronous, which means the server may send
|
||||
further events until the stop request is processed. The client must wait
|
||||
for a river_input_manager_v1.finished event before destroying this
|
||||
object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="finished">
|
||||
<description summary="the server has finished with the input manager">
|
||||
This event indicates that the server will send no further events on this
|
||||
object. The client should destroy the object. See
|
||||
river_input_manager_v1.destroy for more information.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the river_input_manager_v1 object">
|
||||
This request should be called after the finished event has been received
|
||||
to complete destruction of the object.
|
||||
|
||||
It is a protocol error to make this request before the finished event
|
||||
has been received.
|
||||
|
||||
If a client wishes to destroy this object it should send a
|
||||
river_input_manager_v1.stop request and wait for a
|
||||
river_input_manager_v1.finished event. Once the finished event is
|
||||
received it is safe to destroy this object and any other objects created
|
||||
through this interface.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="create_seat">
|
||||
<description summary="create a new seat">
|
||||
Create a new seat with the given name. Has no effect if a seat with the
|
||||
given name already exists.
|
||||
|
||||
The default seat with name "default" always exists and does not need to
|
||||
be explicitly created.
|
||||
</description>
|
||||
<arg name="name" type="string"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy_seat">
|
||||
<description summary="destroy a seat">
|
||||
Destroy the seat with the given name. Has no effect if a seat with the
|
||||
given name does not exist.
|
||||
|
||||
The default seat with name "default" cannot be destroyed and attempting
|
||||
to destroy it will have no effect.
|
||||
|
||||
Any input devices assigned to the destroyed seat at the time of
|
||||
destruction are assigned to the default seat.
|
||||
</description>
|
||||
<arg name="name" type="string"/>
|
||||
</request>
|
||||
|
||||
<event name="input_device">
|
||||
<description summary="new input device">
|
||||
A new input device has been created.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_input_device_v1"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="river_input_device_v1" version="1">
|
||||
<description summary="an input device">
|
||||
An input device represents a physical keyboard, mouse, touchscreen, or
|
||||
drawing tablet tool. It is assigned to exactly one seat at a time.
|
||||
By default, all input devices are assigned to the default seat.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_repeat_info" value="0"/>
|
||||
<entry name="invalid_scroll_factor" value="1"/>
|
||||
<entry name="invalid_map_to_rectangle" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the input device object">
|
||||
This request indicates that the client will no longer use the input
|
||||
device object and that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="removed">
|
||||
<description summary="the input device is removed">
|
||||
This event indicates that the input device has been removed.
|
||||
|
||||
The server will send no further events on this object and ignore any
|
||||
request (other than river_input_device_v1.destroy) made after this event is
|
||||
sent. The client should destroy this object with the
|
||||
river_input_device_v1.destroy request to free up resources.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<enum name="type">
|
||||
<entry name="keyboard" value="0"/>
|
||||
<entry name="pointer" value="1"/>
|
||||
<entry name="touch" value="2"/>
|
||||
<entry name="tablet" value="3"/>
|
||||
</enum>
|
||||
|
||||
<event name="type">
|
||||
<description summary="the type of the input device">
|
||||
The type of the input device. This event is sent once when the
|
||||
river_input_device_v1 object is created. The device type cannot
|
||||
change during the lifetime of the object.
|
||||
</description>
|
||||
<arg name="type" type="uint" enum="type"/>
|
||||
</event>
|
||||
|
||||
<event name="name">
|
||||
<description summary="the name of the input device">
|
||||
The name of the input device. This event is sent once when the
|
||||
river_input_device_v1 object is created. The device name cannot
|
||||
change during the lifetime of the object.
|
||||
</description>
|
||||
<arg name="name" type="string"/>
|
||||
</event>
|
||||
|
||||
<request name="assign_to_seat">
|
||||
<description summary="assign the input device to a seat">
|
||||
Assign the input device to a seat. All input devices not explicitly
|
||||
assigned to a seat are considered assigned to the default seat.
|
||||
|
||||
Has no effect if a seat with the given name does not exist.
|
||||
</description>
|
||||
<arg name="name" type="string" summary="name of the seat"/>
|
||||
</request>
|
||||
|
||||
<request name="set_repeat_info">
|
||||
<description summary="set keyboard repeat rate and delay">
|
||||
Set repeat rate and delay for a keyboard input device. Has no effect if
|
||||
the device is not a keyboard.
|
||||
|
||||
Negative values for either rate or delay are illegal. A rate of zero
|
||||
will disable any repeating (regardless of the value of delay).
|
||||
</description>
|
||||
<arg name="rate" type="int" summary="rate in key repeats per second"/>
|
||||
<arg name="delay" type="int" summary="delay in milliseconds"/>
|
||||
</request>
|
||||
|
||||
<request name="set_scroll_factor">
|
||||
<description summary="set scroll factor">
|
||||
Set the scroll factor for a pointer input device. Has no effect if the
|
||||
device is not a pointer.
|
||||
|
||||
For example, a factor of 0.5 will make scrolling twice as slow while a
|
||||
factor of 3.0 will make scrolling 3 times as fast.
|
||||
|
||||
Setting a scroll factor less than 0 is a protocol error.
|
||||
</description>
|
||||
<arg name="factor" type="fixed"/>
|
||||
</request>
|
||||
|
||||
<request name="map_to_output">
|
||||
<description summary="map input device to the given output">
|
||||
Map the input device to the given output. Has no effect if the device is
|
||||
not a pointer, touch, or tablet device.
|
||||
|
||||
If mapped to both an output and a rectangle, the rectangle has priority.
|
||||
|
||||
Passing null clears an existing mapping.
|
||||
</description>
|
||||
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
|
||||
</request>
|
||||
|
||||
<request name="map_to_rectangle">
|
||||
<description summary="map input device to the given rectangle">
|
||||
Map the input device to the given rectangle in the global compositor
|
||||
coordinate space. Has no effect if the device is not a pointer, touch,
|
||||
or tablet device.
|
||||
|
||||
If mapped to both an output and a rectangle, the rectangle has priority.
|
||||
|
||||
Width and height must be greater than or equal to 0.
|
||||
|
||||
Passing 0 for width or height clears an existing mapping.
|
||||
</description>
|
||||
<arg name="x" type="int"/>
|
||||
<arg name="y" type="int"/>
|
||||
<arg name="width" type="int"/>
|
||||
<arg name="height" type="int"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,191 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="river_layer_shell_v1">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: © 2025 Isaac Freund
|
||||
SPDX-License-Identifier: MIT
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
<description summary="optional layer shell support">
|
||||
This protocol allows the river-window-management-v1 window manager to
|
||||
support the wlr-layer-shell-unstable-v1 protocol.
|
||||
|
||||
The key words "must", "must not", "required", "shall", "shall not",
|
||||
"should", "should not", "recommended", "may", and "optional" in this
|
||||
document are to be interpreted as described in IETF RFC 2119.
|
||||
</description>
|
||||
|
||||
<interface name="river_layer_shell_v1" version="1">
|
||||
<description summary="river layer shell global interface">
|
||||
This global interface should only be advertised to the client if the
|
||||
river_window_manager_v1 global is also advertised. Binding this interface
|
||||
indicates that the window manager supports layer shell.
|
||||
|
||||
If the window manager does not bind this interface, the compositor should
|
||||
not allow clients to map layer surfaces. This can be achieved by
|
||||
closing layer surfaces immediately.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="object_already_created" value="0"
|
||||
summary="the layer_shell_output/seat object was already created."/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the river_layer_shell_v1 object">
|
||||
This request indicates that the client will no longer use the
|
||||
river_layer_shell_v1 object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="get_output">
|
||||
<description summary="get layer shell output state">
|
||||
It is a protocol error to make this request more than once for a given
|
||||
river_output_v1 object.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_layer_shell_output_v1"/>
|
||||
<arg name="output" type="object" interface="river_output_v1"/>
|
||||
</request>
|
||||
|
||||
<request name="get_seat">
|
||||
<description summary="get layer shell seat state">
|
||||
It is a protocol error to make this request more than once for a given
|
||||
river_seat_v1 object.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_layer_shell_seat_v1"/>
|
||||
<arg name="seat" type="object" interface="river_seat_v1"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="river_layer_shell_output_v1" version="1">
|
||||
<description summary="layer shell output state">
|
||||
The lifetime of this object is tied to the corresponding river_output_v1.
|
||||
This object is made inert when the river_output_v1.removed event is sent
|
||||
and should be destroyed.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the object">
|
||||
This request indicates that the client will no longer use the
|
||||
river_layer_shell_output_v1 object and that it may be safely destroyed.
|
||||
|
||||
This request should be made after the river_output_v1.removed event is
|
||||
received to complete destruction of the output.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="non_exclusive_area">
|
||||
<description summary="area left after subtracting exclusive zones">
|
||||
This event indicates the area of the output remaining after subtracting
|
||||
the exclusive zones of layer surfaces. Exclusive zones are a hint, the
|
||||
window manager is free to ignore this area hint if it wishes.
|
||||
|
||||
The x and y values are in the global coordinate space, not relative to
|
||||
the position of the output.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
</description>
|
||||
<arg name="x" type="int" summary="global x coordinate"/>
|
||||
<arg name="y" type="int" summary="global y coordinate"/>
|
||||
<arg name="width" type="int" summary="area width"/>
|
||||
<arg name="height" type="int" summary="area height"/>
|
||||
</event>
|
||||
|
||||
<request name="set_default">
|
||||
<description summary="Set default output for layer surfaces">
|
||||
Mark this output as the default for new layer surfaces which do not
|
||||
request a specific output themselves. This request overrides any
|
||||
previous set_default request on any river_layer_shell_output_v1 object.
|
||||
|
||||
If no set_default request is made or if the default output is destroyed,
|
||||
the default output is undefined until the next set_default request.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="river_layer_shell_seat_v1" version="1">
|
||||
<description summary="layer shell seat state">
|
||||
The lifetime of this object is tied to the corresponding river_seat_v1.
|
||||
This object is made inert when the river_seat_v1.removed event is sent and
|
||||
should be destroyed.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the object">
|
||||
This request indicates that the client will no longer use the
|
||||
river_layer_shell_seat_v1 object and that it may be safely destroyed.
|
||||
|
||||
This request should be made after the river_seat_v1.removed event is
|
||||
received to complete destruction of the seat.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="focus_exclusive">
|
||||
<description summary="layer shell surface has exclusive focus">
|
||||
A layer shell surface will be given exclusive keyboard focus at the end
|
||||
of the manage sequence in which this event is sent. The window manager
|
||||
may want to update window decorations or similar to indicate that no
|
||||
window is focused.
|
||||
|
||||
Until the focus_non_exclusive or focus_none event is sent, all window
|
||||
manager requests to change focus are ignored.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="focus_non_exclusive">
|
||||
<description summary="layer shell surface wants non-exclusive focus">
|
||||
A layer shell surface will be given non-exclusive keyboard focus at the
|
||||
end of the manage sequence in which this event is sent. The window
|
||||
manager may want to update window decorations or similar to indicate
|
||||
that no window is focused.
|
||||
|
||||
The window manager continues to control focus and may choose to focus a
|
||||
different window/shell surface at any time. If the window manager sets
|
||||
focus during the same manage sequence in which this event is sent, the
|
||||
layer surface will not be focused.
|
||||
|
||||
If the layer surface with non-exclusive focus is closed or the window
|
||||
manager chooses to move focus away from the layer surface, a focus_none
|
||||
event will be sent in the next manage sequence.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="focus_none">
|
||||
<description summary="no layer shell surface has focus">
|
||||
No layer shell surface will have keyboard focus at the end of the manage
|
||||
sequence in which this event is sent. The window manager may want to
|
||||
return focus to whichever window last had focus, for example.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,891 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="river_libinput_config_v1">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: © 2025 Isaac Freund
|
||||
SPDX-License-Identifier: MIT
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
<description summary="configure libinput devices">
|
||||
This protocol exposes libinput device configuration APIs. The libinput
|
||||
documentation should be referred to for detailed information on libinput's
|
||||
behavior.
|
||||
|
||||
Note that the compositor will not be able to expose libinput devices through
|
||||
this protocol when it does not have access to the hardware, for example when
|
||||
running nested in another Wayland compositor or X11 session.
|
||||
|
||||
This protocol is designed so that (hopefully) any backwards compatible
|
||||
change to libinput's API can be matched with a backwards compatible change
|
||||
to this protocol.
|
||||
|
||||
Note: the libinput API uses floating point types (float and double in C)
|
||||
which are not (yet?) natively supported by the Wayland protocol. However,
|
||||
the Wayland protocol does support sending arbitrary bytes through the array
|
||||
argument type. This protocol uses e.g. type="array" summary="double" to
|
||||
indicate a native-endian IEEE-754 64-bit double value.
|
||||
|
||||
The key words "must", "must not", "required", "shall", "shall not",
|
||||
"should", "should not", "recommended", "may", and "optional" in this
|
||||
document are to be interpreted as described in IETF RFC 2119.
|
||||
</description>
|
||||
|
||||
<interface name="river_libinput_config_v1" version="1">
|
||||
<description summary="libinput config global interface">
|
||||
Global interface for configuring libinput devices. This global should
|
||||
only be advertised if river_input_manager_v1 is advertised as well.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_arg" value="0"
|
||||
summary="invalid enum value or similar"/>
|
||||
<entry name="invalid_destroy" value="1"/>
|
||||
</enum>
|
||||
|
||||
<request name="stop">
|
||||
<description summary="stop sending events">
|
||||
This request indicates that the client no longer wishes to receive
|
||||
events on this object.
|
||||
|
||||
The Wayland protocol is asynchronous, which means the server may send
|
||||
further events until the stop request is processed. The client must wait
|
||||
for a river_libinput_config_v1.finished event before destroying this
|
||||
object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="finished">
|
||||
<description summary="the server has finished with the object">
|
||||
This event indicates that the server will send no further events on this
|
||||
object. The client should destroy the object. See
|
||||
river_libinput_config_v1.destroy for more information.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the river_libinput_config_v1 object">
|
||||
This request should be called after the finished event has been received
|
||||
to complete destruction of the object.
|
||||
|
||||
It is a protocol error to make this request before the finished event
|
||||
has been received.
|
||||
|
||||
If a client wishes to destroy this object it should send a
|
||||
river_libinput_config_v1.stop request and wait for a
|
||||
river_libinput_config_v1.finished event. Once the finished event is
|
||||
received it is safe to destroy this object and any other objects created
|
||||
through this interface.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="libinput_device">
|
||||
<description summary="new libinput device">
|
||||
A new libinput device has been created. Not every river_input_device_v1
|
||||
is necessarily a libinput device as well.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_libinput_device_v1"/>
|
||||
</event>
|
||||
|
||||
<request name="create_accel_config">
|
||||
<description summary="create a acceleration config">
|
||||
Create a acceleration config which can be applied
|
||||
with river_libinput_device_v1.apply_accel_config.
|
||||
</description>
|
||||
<arg name="id" type="new_id"
|
||||
interface="river_libinput_accel_config_v1"/>
|
||||
<arg name="profile" type="uint"
|
||||
enum="river_libinput_device_v1.accel_profile"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="river_libinput_device_v1" version="1">
|
||||
<description summary="a libinput device">
|
||||
In general, *_support events will be sent exactly once directly after the
|
||||
river_libinput_device_v1 is created. *_default events will be sent after
|
||||
*_support events if the config option is supported, and *_current events
|
||||
willl be sent after the *_default events and again whenever the config
|
||||
option is changed.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_arg" value="0"
|
||||
summary="invalid enum value or similar"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the libinput device object">
|
||||
This request indicates that the client will no longer use the input
|
||||
device object and that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="removed">
|
||||
<description summary="the libinput device is removed">
|
||||
This event indicates that the libinput device has been removed.
|
||||
|
||||
The server will send no further events on this object and ignore any
|
||||
request (other than river_libinput_device_v1.destroy) made after this
|
||||
event is sent. The client should destroy this object with the
|
||||
river_libinput_device_v1.destroy request to free up resources.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="input_device">
|
||||
<description summary="corresponding river input device">
|
||||
The river_input_device_v1 corresponding to this libinput device.
|
||||
This event will always be the first event sent on the
|
||||
river_libinput_device_v1 object, and it will be sent exactly once.
|
||||
</description>
|
||||
<arg name="device" type="object" interface="river_input_device_v1"/>
|
||||
</event>
|
||||
|
||||
<enum name="send_events_modes" bitfield="true">
|
||||
<entry name="enabled" value="0"/>
|
||||
<entry name="disabled" value="1"/>
|
||||
<entry name="disabled_on_external_mouse" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="send_events_support">
|
||||
<description summary="supported send events modes">
|
||||
Supported send events modes.
|
||||
</description>
|
||||
<arg name="modes" type="uint" enum="send_events_modes"/>
|
||||
</event>
|
||||
|
||||
<event name="send_events_default">
|
||||
<description summary="default send events mode">
|
||||
Default send events mode.
|
||||
</description>
|
||||
<arg name="mode" type="uint" enum="send_events_modes"/>
|
||||
</event>
|
||||
|
||||
<event name="send_events_current">
|
||||
<description summary="current send events mode">
|
||||
Current send events mode.
|
||||
</description>
|
||||
<arg name="mode" type="uint" enum="send_events_modes"/>
|
||||
</event>
|
||||
|
||||
<request name="set_send_events">
|
||||
<description summary="set send events mode">
|
||||
Set the send events mode for the device.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="mode" type="uint" enum="send_events_modes"/>
|
||||
</request>
|
||||
|
||||
<enum name="tap_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="tap_support">
|
||||
<description summary="tap-to-click/drag support">
|
||||
The number of fingers supported for tap-to-click/drag.
|
||||
If finger_count is 0, tap-to-click and drag are unsupported.
|
||||
</description>
|
||||
<arg name="finger_count" type="int"/>
|
||||
</event>
|
||||
|
||||
<event name="tap_default">
|
||||
<description summary="default tap-to-click state">
|
||||
Default tap-to-click state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="tap_state"/>
|
||||
</event>
|
||||
|
||||
<event name="tap_current">
|
||||
<description summary="current tap-to-click state">
|
||||
Current tap-to-click state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="tap_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_tap">
|
||||
<description summary="enable/disable tap-to-click">
|
||||
Configure tap-to-click on this device, with a default mapping of
|
||||
1, 2, 3 finger tap mapping to left, right, middle click, respectively.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="tap_state"/>
|
||||
</request>
|
||||
|
||||
<enum name="tap_button_map">
|
||||
<entry name="lrm" value="0"
|
||||
summary="1/2/3 finger tap maps to left/right/middle"/>
|
||||
<entry name="lmr" value="1"
|
||||
summary="1/2/3 finger tap maps to left/middle/right"/>
|
||||
</enum>
|
||||
|
||||
<event name="tap_button_map_default">
|
||||
<description summary="default tap-to-click button map">
|
||||
Default tap-to-click button map.
|
||||
</description>
|
||||
<arg name="button_map" type="uint" enum="tap_button_map"/>
|
||||
</event>
|
||||
|
||||
<event name="tap_button_map_current">
|
||||
<description summary="current tap-to-click button map">
|
||||
Current tap-to-click button map.
|
||||
</description>
|
||||
<arg name="button_map" type="uint" enum="tap_button_map"/>
|
||||
</event>
|
||||
|
||||
<request name="set_tap_button_map">
|
||||
<description summary="set tap-to-click button map">
|
||||
Set the finger number to button number mapping for tap-to-click. The
|
||||
default mapping on most devices is to have a 1, 2 and 3 finger tap to
|
||||
map to the left, right and middle button, respectively.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="button_map" type="uint" enum="tap_button_map"/>
|
||||
</request>
|
||||
|
||||
<enum name="drag_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="drag_default">
|
||||
<description summary="default tap-and-drag state">
|
||||
Default tap-and-drag state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="drag_state"/>
|
||||
</event>
|
||||
|
||||
<event name="drag_current">
|
||||
<description summary="current tap-and-drag state">
|
||||
Current tap-and-drag state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="drag_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_drag">
|
||||
<description summary="set tap-and-drag state">
|
||||
Configure tap-and-drag functionality on the device.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="drag_state"/>
|
||||
</request>
|
||||
|
||||
<enum name="drag_lock_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled_timeout" value="1"/>
|
||||
<entry name="enabled_sticky" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="drag_lock_default">
|
||||
<description summary="default drag lock state">
|
||||
Default drag lock state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="drag_lock_state"/>
|
||||
</event>
|
||||
|
||||
<event name="drag_lock_current">
|
||||
<description summary="current drag lock state">
|
||||
Current drag lock state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="drag_lock_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_drag_lock">
|
||||
<description summary="set drag lock state">
|
||||
Configure drag-lock during tapping on this device. When enabled, a
|
||||
finger may be lifted and put back on the touchpad and the drag process
|
||||
continues. A timeout for lifting the finger is optional. When disabled,
|
||||
lifting the finger during a tap-and-drag will immediately stop the drag.
|
||||
See the libinput documentation for more details.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="drag_lock_state"/>
|
||||
</request>
|
||||
|
||||
<event name="three_finger_drag_support">
|
||||
<description summary="three finger drag support">
|
||||
The number of fingers supported for three/four finger drag.
|
||||
If finger_count is less than 3, three finger drag is unsupported.
|
||||
</description>
|
||||
<arg name="finger_count" type="int"/>
|
||||
</event>
|
||||
|
||||
<enum name="three_finger_drag_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled_3fg" value="1"/>
|
||||
<entry name="enabled_4fg" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="three_finger_drag_default">
|
||||
<description summary="default three finger drag state">
|
||||
Default three finger drag state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="three_finger_drag_state"/>
|
||||
</event>
|
||||
|
||||
<event name="three_finger_drag_current">
|
||||
<description summary="current three finger drag state">
|
||||
Current three finger drag state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="three_finger_drag_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_three_finger_drag">
|
||||
<description summary="set three finger drag state">
|
||||
Configure three finger drag functionality for the device.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="three_finger_drag_state"/>
|
||||
</request>
|
||||
|
||||
<event name="calibration_matrix_support">
|
||||
<description summary="support for a calibration matrix">
|
||||
A calibration matrix is supported if the supported argument is non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<event name="calibration_matrix_default">
|
||||
<description summary="default calibration matrix">
|
||||
Default calibration matrix.
|
||||
</description>
|
||||
<arg name="matrix" type="array" summary="array of 6 floats"/>
|
||||
</event>
|
||||
|
||||
<event name="calibration_matrix_current">
|
||||
<description summary="current calibration matrix">
|
||||
Current calibration matrix.
|
||||
</description>
|
||||
<arg name="matrix" type="array" summary="array of 6 floats"/>
|
||||
</event>
|
||||
|
||||
<request name="set_calibration_matrix">
|
||||
<description summary="set calibration matrix">
|
||||
Set calibration matrix.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="matrix" type="array" summary="array of 6 floats"/>
|
||||
</request>
|
||||
|
||||
<enum name="accel_profile">
|
||||
<entry name="none" value="0"/>
|
||||
<entry name="flat" value="1"/>
|
||||
<entry name="adaptive" value="2"/>
|
||||
<entry name="custom" value="4"/>
|
||||
</enum>
|
||||
|
||||
<enum name="accel_profiles" bitfield="true">
|
||||
<entry name="none" value="0"/>
|
||||
<entry name="flat" value="1"/>
|
||||
<entry name="adaptive" value="2"/>
|
||||
<entry name="custom" value="4"/>
|
||||
</enum>
|
||||
|
||||
<event name="accel_profiles_support">
|
||||
<description summary="supported acceleration profiles">
|
||||
Supported acceleration profiles.
|
||||
</description>
|
||||
<arg name="profiles" type="uint" enum="accel_profiles"/>
|
||||
</event>
|
||||
|
||||
<event name="accel_profile_default">
|
||||
<description summary="default acceleration profile">
|
||||
Default acceleration profile.
|
||||
</description>
|
||||
<arg name="profile" type="uint" enum="accel_profile"/>
|
||||
</event>
|
||||
|
||||
<event name="accel_profile_current">
|
||||
<description summary="current send events mode">
|
||||
Current acceleration profile.
|
||||
</description>
|
||||
<arg name="profile" type="uint" enum="accel_profile"/>
|
||||
</event>
|
||||
|
||||
<request name="set_accel_profile">
|
||||
<description summary="set send events mode">
|
||||
Set the acceleration profile.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="profile" type="uint" enum="accel_profile"/>
|
||||
</request>
|
||||
|
||||
<event name="accel_speed_default">
|
||||
<description summary="default acceleration speed">
|
||||
Default acceleration speed.
|
||||
</description>
|
||||
<arg name="speed" type="array" summary="double"/>
|
||||
</event>
|
||||
|
||||
<event name="accel_speed_current">
|
||||
<description summary="current acceleration speed">
|
||||
Current acceleration speed.
|
||||
</description>
|
||||
<arg name="speed" type="array" summary="double"/>
|
||||
</event>
|
||||
|
||||
<request name="set_accel_speed">
|
||||
<description summary="set acceleration speed">
|
||||
Set the acceleration speed within a range of [-1, 1], where 0 is
|
||||
the default acceleration for this device, -1 is the slowest acceleration
|
||||
and 1 is the maximum acceleration available on this device.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="speed" type="array" summary="double"/>
|
||||
</request>
|
||||
|
||||
<request name="apply_accel_config">
|
||||
<description summary="apply acceleration config">
|
||||
Apply a pointer accleration config.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="config" type="object" interface="river_libinput_accel_config_v1"/>
|
||||
</request>
|
||||
|
||||
<event name="natural_scroll_support">
|
||||
<description summary="support for natural scroll">
|
||||
Natural scroll is supported if the supported argument is non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<enum name="natural_scroll_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="natural_scroll_default">
|
||||
<description summary="default natural scroll">
|
||||
Default natural scroll.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="natural_scroll_state"/>
|
||||
</event>
|
||||
|
||||
<event name="natural_scroll_current">
|
||||
<description summary="current natural scroll state">
|
||||
Current natural scroll.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="natural_scroll_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_natural_scroll">
|
||||
<description summary="set natural scroll state">
|
||||
Set natural scroll state.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="natural_scroll_state"/>
|
||||
</request>
|
||||
|
||||
<event name="left_handed_support">
|
||||
<description summary="support for left-handed mode">
|
||||
Left-handed mode is supported if the supported argument is non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<enum name="left_handed_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="left_handed_default">
|
||||
<description summary="default left-handed mode">
|
||||
Default left-handed mode.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="left_handed_state"/>
|
||||
</event>
|
||||
|
||||
<event name="left_handed_current">
|
||||
<description summary="current left-handed mode state">
|
||||
Current left-handed mode.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="left_handed_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_left_handed">
|
||||
<description summary="set left-handed mode state">
|
||||
Set left-handed mode state.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="left_handed_state"/>
|
||||
</request>
|
||||
|
||||
<enum name="click_method">
|
||||
<entry name="none" value="0"/>
|
||||
<entry name="button_areas" value="1"/>
|
||||
<entry name="clickfinger" value="2"/>
|
||||
</enum>
|
||||
|
||||
<enum name="click_methods" bitfield="true">
|
||||
<entry name="none" value="0"/>
|
||||
<entry name="button_areas" value="1"/>
|
||||
<entry name="clickfinger" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="click_method_support">
|
||||
<description summary="supported click methods">
|
||||
The click methods supported by the device.
|
||||
</description>
|
||||
<arg name="methods" type="uint" enum="click_methods"/>
|
||||
</event>
|
||||
|
||||
<event name="click_method_default">
|
||||
<description summary="default click method">
|
||||
Default click method.
|
||||
</description>
|
||||
<arg name="method" type="uint" enum="click_method"/>
|
||||
</event>
|
||||
|
||||
<event name="click_method_current">
|
||||
<description summary="current click method">
|
||||
Current click method.
|
||||
</description>
|
||||
<arg name="method" type="uint" enum="click_method"/>
|
||||
</event>
|
||||
|
||||
<request name="set_click_method">
|
||||
<description summary="set click method">
|
||||
Set click method.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="method" type="uint" enum="click_method"/>
|
||||
</request>
|
||||
|
||||
<enum name="clickfinger_button_map">
|
||||
<entry name="lrm" value="0"/>
|
||||
<entry name="lmr" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="clickfinger_button_map_default">
|
||||
<description summary="default clickfinger button map">
|
||||
Default clickfinger button map.
|
||||
Supported if click_methods.clickfinger is supported.
|
||||
</description>
|
||||
<arg name="button_map" type="uint" enum="clickfinger_button_map"/>
|
||||
</event>
|
||||
|
||||
<event name="clickfinger_button_map_current">
|
||||
<description summary="current clickfinger button map">
|
||||
Current clickfinger button map.
|
||||
Supported if click_methods.clickfinger is supported.
|
||||
</description>
|
||||
<arg name="button_map" type="uint" enum="clickfinger_button_map"/>
|
||||
</event>
|
||||
|
||||
<request name="set_clickfinger_button_map">
|
||||
<description summary="set clickfinger button map">
|
||||
Set clickfinger button map.
|
||||
Supported if click_methods.clickfinger is supported.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="button_map" type="uint" enum="clickfinger_button_map"/>
|
||||
</request>
|
||||
|
||||
<event name="middle_emulation_support">
|
||||
<description summary="support for middle mouse button emulation">
|
||||
Middle mouse button emulation is supported if the supported argument is
|
||||
non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<enum name="middle_emulation_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="middle_emulation_default">
|
||||
<description summary="default middle mouse button emulation">
|
||||
Default middle mouse button emulation.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="middle_emulation_state"/>
|
||||
</event>
|
||||
|
||||
<event name="middle_emulation_current">
|
||||
<description summary="current middle mouse button emulation state">
|
||||
Current middle mouse button emulation.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="middle_emulation_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_middle_emulation">
|
||||
<description summary="set middle mouse button emulation state">
|
||||
Set middle mouse button emulation state.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="middle_emulation_state"/>
|
||||
</request>
|
||||
|
||||
<enum name="scroll_method">
|
||||
<entry name="no_scroll" value="0"/>
|
||||
<entry name="two_finger" value="1"/>
|
||||
<entry name="edge" value="2"/>
|
||||
<entry name="on_button_down" value="4"/>
|
||||
</enum>
|
||||
|
||||
<enum name="scroll_methods" bitfield="true">
|
||||
<entry name="no_scroll" value="0"/>
|
||||
<entry name="two_finger" value="1"/>
|
||||
<entry name="edge" value="2"/>
|
||||
<entry name="on_button_down" value="4"/>
|
||||
</enum>
|
||||
|
||||
<event name="scroll_method_support">
|
||||
<description summary="supported scroll methods">
|
||||
The scroll methods supported by the device.
|
||||
</description>
|
||||
<arg name="methods" type="uint" enum="scroll_methods"/>
|
||||
</event>
|
||||
|
||||
<event name="scroll_method_default">
|
||||
<description summary="default scroll method">
|
||||
Default scroll method.
|
||||
</description>
|
||||
<arg name="method" type="uint" enum="scroll_method"/>
|
||||
</event>
|
||||
|
||||
<event name="scroll_method_current">
|
||||
<description summary="current scroll method">
|
||||
Current scroll method.
|
||||
</description>
|
||||
<arg name="method" type="uint" enum="scroll_method"/>
|
||||
</event>
|
||||
|
||||
<request name="set_scroll_method">
|
||||
<description summary="set scroll method">
|
||||
Set scroll method.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="method" type="uint" enum="scroll_method"/>
|
||||
</request>
|
||||
|
||||
<event name="scroll_button_default">
|
||||
<description summary="default scroll button">
|
||||
Default scroll button.
|
||||
Supported if scroll_methods.on_button_down is supported.
|
||||
</description>
|
||||
<arg name="button" type="uint"/>
|
||||
</event>
|
||||
|
||||
<event name="scroll_button_current">
|
||||
<description summary="current scroll button">
|
||||
Current scroll button.
|
||||
Supported if scroll_methods.on_button_down is supported.
|
||||
</description>
|
||||
<arg name="button" type="uint"/>
|
||||
</event>
|
||||
|
||||
<request name="set_scroll_button">
|
||||
<description summary="set scroll button">
|
||||
Set scroll button.
|
||||
Supported if scroll_methods.on_button_down is supported.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="button" type="uint"/>
|
||||
</request>
|
||||
|
||||
<enum name="scroll_button_lock_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="scroll_button_lock_default">
|
||||
<description summary="default scroll button lock state">
|
||||
Default scroll button lock state.
|
||||
Supported if scroll_methods.on_button_down is supported.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="scroll_button_lock_state"/>
|
||||
</event>
|
||||
|
||||
<event name="scroll_button_lock_current">
|
||||
<description summary="current scroll button lock state">
|
||||
Current scroll button lock state.
|
||||
Supported if scroll_methods.on_button_down is supported.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="scroll_button_lock_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_scroll_button_lock">
|
||||
<description summary="set scroll button lock state">
|
||||
Set scroll button lock state.
|
||||
Supported if scroll_methods.on_button_down is supported.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="scroll_button_lock_state"/>
|
||||
</request>
|
||||
|
||||
<event name="dwt_support">
|
||||
<description summary="support for disable-while-typing">
|
||||
Disable-while-typing is supported if the supported argument is
|
||||
non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<enum name="dwt_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="dwt_default">
|
||||
<description summary="default disable-while-typing state">
|
||||
Default disable-while-typing state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="dwt_state"/>
|
||||
</event>
|
||||
|
||||
<event name="dwt_current">
|
||||
<description summary="current disable-while-typing state">
|
||||
Current disable-while-typing state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="dwt_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_dwt">
|
||||
<description summary="set disable-while-typing state">
|
||||
Set disable-while-typing state.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="dwt_state"/>
|
||||
</request>
|
||||
|
||||
<event name="dwtp_support">
|
||||
<description summary="support for disable-while-trackpointing">
|
||||
Disable-while-trackpointing is supported if the supported argument is
|
||||
non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<enum name="dwtp_state">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="dwtp_default">
|
||||
<description summary="default disable-while-trackpointing state">
|
||||
Default disable-while-trackpointing state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="dwtp_state"/>
|
||||
</event>
|
||||
|
||||
<event name="dwtp_current">
|
||||
<description summary="current disable-while-trackpointing state">
|
||||
Current disable-while-trackpointing state.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="dwtp_state"/>
|
||||
</event>
|
||||
|
||||
<request name="set_dwtp">
|
||||
<description summary="set disable-while-trackpointing state">
|
||||
Set disable-while-trackpointing state.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="state" type="uint" enum="dwtp_state"/>
|
||||
</request>
|
||||
|
||||
<event name="rotation_support">
|
||||
<description summary="support for rotation">
|
||||
Rotation is supported if the supported argument is non-zero.
|
||||
</description>
|
||||
<arg name="supported" type="int" summary="boolean"/>
|
||||
</event>
|
||||
|
||||
<event name="rotation_default">
|
||||
<description summary="default rotation angle">
|
||||
Default rotation angle.
|
||||
</description>
|
||||
<arg name="angle" type="uint"/>
|
||||
</event>
|
||||
|
||||
<event name="rotation_current">
|
||||
<description summary="current rotation angle">
|
||||
Current rotation angle.
|
||||
</description>
|
||||
<arg name="angle" type="uint"/>
|
||||
</event>
|
||||
|
||||
<request name="set_rotation">
|
||||
<description summary="set rotation angle">
|
||||
Set rotation angle in degrees clockwise off the logical neutral
|
||||
position. Angle must be in the range [0-360).
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="angle" type="uint"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="river_libinput_accel_config_v1" version="1">
|
||||
<description summary="acceleration config">
|
||||
The result returned by libinput on setting configuration for a device.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_arg" value="0"
|
||||
summary="invalid enum value or similar"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the accel object">
|
||||
This request indicates that the client will no longer use the accel
|
||||
config object and that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<enum name="accel_type">
|
||||
<entry name="fallback" value="0"/>
|
||||
<entry name="motion" value="1"/>
|
||||
<entry name="scroll" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_points">
|
||||
<description summary="define custom acceleration function">
|
||||
Defines the acceleration function for a given movement type
|
||||
in an acceleration configuration with custom accel profile.
|
||||
</description>
|
||||
<arg name="result" type="new_id" interface="river_libinput_result_v1"/>
|
||||
<arg name="type" type="uint" enum="accel_type"/>
|
||||
<arg name="step" type="array" summary="double"/>
|
||||
<arg name="points" type="array" summary="array of doubles"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="river_libinput_result_v1" version="1">
|
||||
<description summary="config application result">
|
||||
The result returned by libinput on setting configuration for a device.
|
||||
</description>
|
||||
|
||||
<event name="success" type="destructor">
|
||||
<description summary="config success">
|
||||
The configuration was successfully applied to the device.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="unsupported" type="destructor">
|
||||
<description summary="config unsupported">
|
||||
The configuration is unsupported by the device and was ignored.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="invalid" type="destructor">
|
||||
<description summary="config invalid">
|
||||
The configuration is invalid and was ignored.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,314 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="river_xkb_bindings_v1">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: © 2025 Isaac Freund
|
||||
SPDX-License-Identifier: MIT
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
<description summary="xkbcommon-based key bindings">
|
||||
This protocol allows the river-window-management-v1 window manager to
|
||||
define key bindings in terms of xkbcommon keysyms and other configurable
|
||||
properties.
|
||||
|
||||
The key words "must", "must not", "required", "shall", "shall not",
|
||||
"should", "should not", "recommended", "may", and "optional" in this
|
||||
document are to be interpreted as described in IETF RFC 2119.
|
||||
</description>
|
||||
|
||||
<interface name="river_xkb_bindings_v1" version="3">
|
||||
<description summary="xkbcommon bindings global interface">
|
||||
This global interface should only be advertised to the client if the
|
||||
river_window_manager_v1 global is also advertised.
|
||||
</description>
|
||||
|
||||
<enum name="error" since="2">
|
||||
<entry name="object_already_created" value="0" since="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the river_xkb_bindings_v1 object">
|
||||
This request indicates that the client will no longer use the
|
||||
river_xkb_bindings_v1 object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="get_xkb_binding">
|
||||
<description summary="define a new xkbcommon key binding">
|
||||
Define a key binding for the given seat in terms of an xkbcommon keysym
|
||||
and other configurable properties.
|
||||
|
||||
The new key binding is not enabled until initial configuration is
|
||||
completed and the enable request is made during a manage sequence.
|
||||
</description>
|
||||
<arg name="seat" type="object" interface="river_seat_v1"/>
|
||||
<arg name="id" type="new_id" interface="river_xkb_binding_v1"/>
|
||||
<arg name="keysym" type="uint" summary="an xkbcommon keysym"/>
|
||||
<arg name="modifiers" type="uint" enum="river_seat_v1.modifiers"/>
|
||||
</request>
|
||||
|
||||
<request name="get_seat" since="2">
|
||||
<description summary="manage seat-specific state">
|
||||
Create an object to manage seat-specific xkb bindings state.
|
||||
|
||||
It is a protocol error to make this request more than once for a given
|
||||
river_seat_v1 object.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_xkb_bindings_seat_v1"/>
|
||||
<arg name="seat" type="object" interface="river_seat_v1"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="river_xkb_binding_v1" version="3">
|
||||
<description summary="configure a xkb key binding, receive trigger events">
|
||||
This object allows the window manager to configure a xkbcommon key binding
|
||||
and receive events when the key binding is triggered.
|
||||
|
||||
The new key binding is not enabled until the enable request is made during
|
||||
a manage sequence.
|
||||
|
||||
Normally, all key events are sent to the surface with keyboard focus by
|
||||
the compositor. Key events that trigger a key binding are not sent to the
|
||||
surface with keyboard focus.
|
||||
|
||||
If multiple key bindings would be triggered by a single physical key event
|
||||
on the compositor side, it is compositor policy which key binding(s) will
|
||||
receive press/release events or if all of the matched key bindings receive
|
||||
press/release events.
|
||||
|
||||
Key bindings might be matched by the same physical key event due to shared
|
||||
keysym and modifiers. The layout override feature may also cause the same
|
||||
physical key event to trigger two key bindings with different keysyms and
|
||||
different layout overrides configured.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the xkb binding object">
|
||||
This request indicates that the client will no longer use the xkb key
|
||||
binding object and that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="set_layout_override">
|
||||
<description summary="override currently active xkb layout">
|
||||
Specify an xkb layout that should be used to translate key events for
|
||||
the purpose of triggering this key binding irrespective of the currently
|
||||
active xkb layout.
|
||||
|
||||
The layout argument is a 0-indexed xkbcommon layout number for the
|
||||
keyboard that generated the key event.
|
||||
|
||||
If this request is never made, the currently active xkb layout of the
|
||||
keyboard that generated the key event will be used.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
<arg name="layout" type="uint" summary="0-indexed xkbcommon layout"/>
|
||||
</request>
|
||||
|
||||
<request name="enable">
|
||||
<description summary="enable the key binding">
|
||||
This request should be made after all initial configuration has been
|
||||
completed and the window manager wishes the key binding to be able to be
|
||||
triggered.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="disable">
|
||||
<description summary="disable the key binding">
|
||||
This request may be used to temporarily disable the key binding. It may
|
||||
be later re-enabled with the enable request.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="pressed">
|
||||
<description summary="the key triggering the binding has been pressed">
|
||||
This event indicates that the physical key triggering the binding has
|
||||
been pressed.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
|
||||
The compositor should wait for the manage sequence to complete before
|
||||
processing further input events. This allows the window manager client
|
||||
to, for example, modify key bindings and keyboard focus without racing
|
||||
against future input events. The window manager should of course respond
|
||||
as soon as possible as the capacity of the compositor to buffer incoming
|
||||
input events is finite.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="released">
|
||||
<description summary="the key triggering the binding has been released">
|
||||
This event indicates that the physical key triggering the binding has
|
||||
been released.
|
||||
|
||||
Releasing the modifiers for the binding without releasing the "main"
|
||||
physical key that produces the bound keysym does not trigger the release
|
||||
event. This event is sent when the "main" key is released, even if the
|
||||
modifiers have changed since the pressed event.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
|
||||
The compositor should wait for the manage sequence to complete before
|
||||
processing further input events. This allows the window manager client
|
||||
to, for example, modify key bindings and keyboard focus without racing
|
||||
against future input events. The window manager should of course respond
|
||||
as soon as possible as the capacity of the compositor to buffer incoming
|
||||
input events is finite.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="stop_repeat" since="2">
|
||||
<description summary="repeating should be stopped">
|
||||
This event indicates that repeating should be stopped for the binding if
|
||||
the window manager has been repeating some action since the pressed
|
||||
event.
|
||||
|
||||
This event is generally sent when some other (possible unbound) key is
|
||||
pressed after the pressed event is sent and before the released event
|
||||
is sent for this binding.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="river_xkb_bindings_seat_v1" version="3">
|
||||
<description summary="xkb bindings seat">
|
||||
This object manages xkb bindings state associated with a specific seat.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor" since="2">
|
||||
<description summary="destroy the object">
|
||||
This request indicates that the client will no longer use the object and
|
||||
that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="ensure_next_key_eaten" since="2">
|
||||
<description summary="ensure the next key press event is eaten">
|
||||
Ensure that the next non-modifier key press and corresponding release
|
||||
events for this seat are not sent to the currently focused surface.
|
||||
|
||||
If the next non-modifier key press triggers a binding, the
|
||||
pressed/released events are sent to the river_xkb_binding_v1 object as
|
||||
usual.
|
||||
|
||||
If the next non-modifier key press does not trigger a binding, the
|
||||
ate_unbound_key event is sent instead.
|
||||
|
||||
Rationale: the window manager may wish to implement "chorded"
|
||||
keybindings where triggering a binding activates a "submap" with a
|
||||
different set of keybindings. Without a way to eat the next key
|
||||
press event, there is no good way for the window manager to know that it
|
||||
should error out and exit the submap when a key not bound in the submap
|
||||
is pressed.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="cancel_ensure_next_key_eaten" since="2">
|
||||
<description summary="cancel an ensure_next_key_eaten request">
|
||||
This requests cancels the effect of the latest ensure_next_key_eaten
|
||||
request if no key has been eaten due to the request yet. This request
|
||||
has no effect if a key has already been eaten or no
|
||||
ensure_next_key_eaten was made.
|
||||
|
||||
Rationale: the window manager may wish cancel an uncompleted "chorded"
|
||||
keybinding after a timeout of a few seconds. Note that since this
|
||||
timeout use-case requires the window manager to trigger a manage sequence
|
||||
with the river_window_manager_v1.manage_dirty request it is possible that
|
||||
the ate_unbound_key key event may be sent before the window manager has
|
||||
a chance to make the cancel_ensure_next_key_eaten request.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="ate_unbound_key" since="2">
|
||||
<description summary="an unbound key press event was eaten">
|
||||
An unbound key press event was eaten due to the ensure_next_key_eaten
|
||||
request.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="modifiers_watch" since="3">
|
||||
<description summary="watch for change in active modifiers">
|
||||
Request that the server send the modifiers_update event whenever a state
|
||||
change occurs for at least one of the modifiers specified by the
|
||||
modifiers argument.
|
||||
|
||||
The window manager should make this request with the modifiers argument
|
||||
set to 0 when it no longer wishes to take action based on a change in
|
||||
modifiers.
|
||||
|
||||
This request modifies window management state and may only be made as
|
||||
part of a manage sequence, see the river_window_manager_v1 description.
|
||||
</description>
|
||||
<arg name="modifiers" type="uint" enum="river_seat_v1.modifiers"/>
|
||||
</request>
|
||||
|
||||
<event name="modifiers_update" since="3">
|
||||
<description summary="active modifiers for the seat changed">
|
||||
The set of currently active modifiers for the seat changed. This event
|
||||
is only sent when there is a change in state for modifiers marked as
|
||||
watched using the modifiers_watch request.
|
||||
|
||||
The old and new arguments convey the set of modifiers active before and
|
||||
after the change. All modifiers are included in the old and new
|
||||
arguments, including modifiers that are not watched.
|
||||
|
||||
Since this event is only sent when there is a change in state for
|
||||
watched modifiers, it follows that at least one watched modifier is
|
||||
active in old but inactive in new or vice-versa.
|
||||
|
||||
This event will be followed by a manage_start event after all other new
|
||||
state has been sent by the server.
|
||||
|
||||
The compositor should wait for the manage sequence to complete before
|
||||
processing further input events. This allows the window manager client
|
||||
to, for example, modify key bindings and keyboard focus without racing
|
||||
against future input events. The window manager should of course respond
|
||||
as soon as possible as the capacity of the compositor to buffer incoming
|
||||
input events is finite.
|
||||
</description>
|
||||
<arg name="old" type="uint" enum="river_seat_v1.modifiers"
|
||||
summary="previously active modifiers"/>
|
||||
<arg name="new" type="uint" enum="river_seat_v1.modifiers"
|
||||
summary="currently active modifiers"/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,277 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="river_xkb_config_v1">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: © 2026 Isaac Freund
|
||||
SPDX-License-Identifier: MIT
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
<description summary="configure xkbcommon keyboards">
|
||||
This protocol allow a client to set the xkbcommon keymap of individual
|
||||
keyboard input devices. It also allows switching between the layouts of a
|
||||
keymap and toggling capslock/numlock state.
|
||||
|
||||
The key words "must", "must not", "required", "shall", "shall not",
|
||||
"should", "should not", "recommended", "may", and "optional" in this
|
||||
document are to be interpreted as described in IETF RFC 2119.
|
||||
</description>
|
||||
|
||||
<interface name="river_xkb_config_v1" version="1">
|
||||
<description summary="xkb config global interface">
|
||||
Global interface for configuring xkb devices.
|
||||
|
||||
This global should only be advertised if river_input_manager_v1 is
|
||||
advertised as well.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_destroy" value="0"/>
|
||||
<entry name="invalid_format" value="1"/>
|
||||
</enum>
|
||||
|
||||
<request name="stop">
|
||||
<description summary="stop sending events">
|
||||
This request indicates that the client no longer wishes to receive
|
||||
events on this object.
|
||||
|
||||
The Wayland protocol is asynchronous, which means the server may send
|
||||
further events until the stop request is processed. The client must wait
|
||||
for a river_xkb_config_v1.finished event before destroying this object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="finished">
|
||||
<description summary="the server has finished with the object">
|
||||
This event indicates that the server will send no further events on this
|
||||
object. The client should destroy the object. See
|
||||
river_xkb_config_v1.destroy for more information.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the river_xkb_config_v1 object">
|
||||
This request should be called after the finished event has been received
|
||||
to complete destruction of the object.
|
||||
|
||||
It is a protocol error to make this request before the finished event
|
||||
has been received.
|
||||
|
||||
If a client wishes to destroy this object it should send a
|
||||
river_xkb_config_v1.stop request and wait for a
|
||||
river_xkb_config_v1.finished event. Once the finished event is received
|
||||
it is safe to destroy this object and any other objects created through
|
||||
this interface.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<enum name="keymap_format">
|
||||
<entry name="text_v1" value="1" summary="XKB_KEYMAP_FORMAT_TEXT_V1"/>
|
||||
<entry name="text_v2" value="2" summary="XKB_KEYMAP_FORMAT_TEXT_V2"/>
|
||||
</enum>
|
||||
|
||||
<request name="create_keymap">
|
||||
<description summary="create a keymap object">
|
||||
The server must be able to mmap the fd with MAP_PRIVATE.
|
||||
The server will fstat the fd to obtain the size of the keymap.
|
||||
The client must not modify the contents of the fd after making this request.
|
||||
The client should seal the fd with fcntl.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_xkb_keymap_v1"/>
|
||||
<arg name="fd" type="fd"/>
|
||||
<arg name="format" type="uint" enum="keymap_format"/>
|
||||
</request>
|
||||
|
||||
<event name="xkb_keyboard">
|
||||
<description summary="new xkb keyboard">
|
||||
A new xkbcommon keyboard has been created. Not every
|
||||
river_input_device_v1 is necessarily an xkbcommon keyboard as well.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="river_xkb_keyboard_v1"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="river_xkb_keymap_v1" version="1">
|
||||
<description summary="xkbcommon keymap">
|
||||
This object is the result of attempting to create an xkbcommon keymap.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the keymap object">
|
||||
This request indicates that the client will no longer use the keymap
|
||||
object and that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="success">
|
||||
<description summary="keymap creation succeeded">
|
||||
The keymap object was successfully created and may be used with the
|
||||
river_xkb_keyboard_v1.set_keymap request.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="failure">
|
||||
<description summary="keymap creation failed">
|
||||
The compositor failed to create a keymap from the given parameters.
|
||||
|
||||
It is a protocol error to use this keymap object with
|
||||
river_xkb_keyboard_v1.set_keymap.
|
||||
</description>
|
||||
<arg name="error_msg" type="string"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="river_xkb_keyboard_v1" version="1">
|
||||
<description summary="xkbcommon keyboard device">
|
||||
This object represent a physical keyboard which has its configuration and
|
||||
state managed by xkbcommon.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_keymap" value="0"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the xkb keyboard object">
|
||||
This request indicates that the client will no longer use the keyboard
|
||||
object and that it may be safely destroyed.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="removed">
|
||||
<description summary="the xkb keyboard is removed">
|
||||
This event indicates that the xkb keyboard has been removed.
|
||||
|
||||
The server will send no further events on this object and ignore any
|
||||
request (other than river_xkb_keyboard_v1.destroy) made after this event
|
||||
is sent. The client should destroy this object with the
|
||||
river_xkb_keyboard_v1.destroy request to free up resources.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="input_device">
|
||||
<description summary="corresponding river input device">
|
||||
The river_input_device_v1 corresponding to this xkb keyboard. This event
|
||||
will always be the first event sent on the river_xkb_keyboard_v1 object,
|
||||
and it will be sent exactly once.
|
||||
</description>
|
||||
<arg name="device" type="object" interface="river_input_device_v1"/>
|
||||
</event>
|
||||
|
||||
<request name="set_keymap">
|
||||
<description summary="set the keymap">
|
||||
Set the keymap for the keyboard.
|
||||
|
||||
Setting a keymap will reset all layout/modifier state.
|
||||
|
||||
It is a protocol error to pass a keymap object for which the
|
||||
river_xkb_keymap_v1.success event was not received.
|
||||
</description>
|
||||
<arg name="keymap" type="object" interface="river_xkb_keymap_v1"/>
|
||||
</request>
|
||||
|
||||
<request name="set_layout_by_index">
|
||||
<description summary="set the active layout by index">
|
||||
Set the active layout for the keyboard's keymap. Has no effect if the
|
||||
layout index is out of bounds for the current keymap.
|
||||
</description>
|
||||
<arg name="index" type="int"/>
|
||||
</request>
|
||||
|
||||
<request name="set_layout_by_name">
|
||||
<description summary="set the active layout by name">
|
||||
Set the active layout for the keyboard's keymap. Has no effect if there
|
||||
is no layout with the give name for the keyboard's keymap.
|
||||
</description>
|
||||
<arg name="name" type="string"/>
|
||||
</request>
|
||||
|
||||
<event name="layout">
|
||||
<description summary="currently active layout">
|
||||
The currently active layout index and name. The name arg may be null if
|
||||
the active layout does not have a name.
|
||||
|
||||
This event is sent once when the river_xkb_keyboard_v1 is created and
|
||||
again whenever the layout changes.
|
||||
</description>
|
||||
<arg name="index" type="uint"/>
|
||||
<arg name="name" type="string" allow-null="true"/>
|
||||
</event>
|
||||
|
||||
<request name="capslock_enable">
|
||||
<description summary="enable capslock">
|
||||
Enable capslock for the keyboard.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="capslock_disable">
|
||||
<description summary="disable capslock">
|
||||
Disable capslock for the keyboard.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="capslock_enabled">
|
||||
<description summary="capslock is currently enabled">
|
||||
Capslock is currently enabled for the keyboard.
|
||||
|
||||
This event is sent once when the river_xkb_keyboard_v1 is created and
|
||||
again whenever the capslock state changes.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="capslock_disabled">
|
||||
<description summary="capslock is currently disabled">
|
||||
Capslock is currently disabled for the keyboard.
|
||||
|
||||
This event is sent once when the river_xkb_keyboard_v1 is created and
|
||||
again whenever the capslock state changes.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="numlock_enable">
|
||||
<description summary="enable numlock">
|
||||
Enable numlock for the keyboard.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="numlock_disable">
|
||||
<description summary="disable numlock">
|
||||
Disable numlock for the keyboard.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="numlock_enabled">
|
||||
<description summary="numlock is currently enabled">
|
||||
Numlock is currently enabled for the keyboard.
|
||||
|
||||
This event is sent once when the river_xkb_keyboard_v1 is created and
|
||||
again whenever the numlock state changes.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="numlock_disabled">
|
||||
<description summary="numlock is currently disabled">
|
||||
Numlock is currently disabled for the keyboard.
|
||||
|
||||
This event is sent once when the river_xkb_keyboard_v1 is created and
|
||||
again whenever the numlock state changes.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
Reference in New Issue
Block a user