245 lines
11 KiB
XML
245 lines
11 KiB
XML
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
<protocol name="gaming_input_unstable_v2">
|
||
|
|
||
|
<copyright>
|
||
|
Copyright 2016 The Chromium Authors
|
||
|
|
||
|
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 (including the next
|
||
|
paragraph) 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>
|
||
|
|
||
|
<interface name="zcr_gaming_input_v2" version="2">
|
||
|
<description summary="extends wl_seat with gaming input devices">
|
||
|
A global interface to provide gaming input devices for a given seat.
|
||
|
|
||
|
Currently only gamepad devices are supported.
|
||
|
|
||
|
Warning! The protocol described in this file is experimental and
|
||
|
backward incompatible changes may be made. Backward compatible changes
|
||
|
may be added together with the corresponding uinterface version bump.
|
||
|
Backward incompatible changes are done by bumping the version number in
|
||
|
the protocol and uinterface names and resetting the interface version.
|
||
|
Once the protocol is to be declared stable, the 'z' prefix and the
|
||
|
version number in the protocol and interface names are removed and the
|
||
|
interface version number is reset.
|
||
|
</description>
|
||
|
|
||
|
<request name="get_gaming_seat">
|
||
|
<description summary="get a gaming seat">
|
||
|
Get a gaming seat object for a given seat. Gaming seat provides access
|
||
|
to gaming devices
|
||
|
</description>
|
||
|
<arg name="gaming_seat" type="new_id" interface="zcr_gaming_seat_v2"/>
|
||
|
<arg name="seat" type="object" interface="wl_seat"/>
|
||
|
</request>
|
||
|
|
||
|
<request name="destroy" type="destructor">
|
||
|
<description summary="release the memory for the gaming input object">
|
||
|
Destroy gaming_input object. Objects created from this object are
|
||
|
unaffected and should be destroyed separately.
|
||
|
</description>
|
||
|
</request>
|
||
|
</interface>
|
||
|
|
||
|
<interface name="zcr_gaming_seat_v2" version="1">
|
||
|
<description summary="controller object for all gaming devices of a seat">
|
||
|
An object that provides access to all the gaming devices of a seat.
|
||
|
When a gamepad is connected, the compositor will send gamepad_added event.
|
||
|
</description>
|
||
|
|
||
|
<request name="destroy" type="destructor">
|
||
|
<description summary="release the memory for the gaming seat object">
|
||
|
Destroy gaming_seat object. Objects created from this object are
|
||
|
unaffected and should be destroyed separately.
|
||
|
</description>
|
||
|
</request>
|
||
|
|
||
|
<event name="gamepad_added">
|
||
|
<description summary="gamepad added event">
|
||
|
Notification that there is gamepad connected at this seat.
|
||
|
</description>
|
||
|
<arg name="gamepad" type="new_id" interface="zcr_gamepad_v2" summary="new connected gamepad"/>
|
||
|
</event>
|
||
|
|
||
|
<enum name="bus_type">
|
||
|
<description summary="gamepad device bus type">
|
||
|
Device connection type e.g. Bluetooth
|
||
|
</description>
|
||
|
<entry name="usb" value="0" summary="Universal Serial Bus" />
|
||
|
<entry name="bluetooth" value="1" summary="Bluetooth" />
|
||
|
</enum>
|
||
|
|
||
|
<event name="gamepad_added_with_device_info">
|
||
|
<description summary="gamepad added event">
|
||
|
Notification that there is gamepad connected at this seat.
|
||
|
</description>
|
||
|
<arg name="gamepad" type="new_id" interface="zcr_gamepad_v2" summary="new connected gamepad"/>
|
||
|
<arg name="name" type="string" summary="name of the gamepad device" />
|
||
|
<arg name="bus" type="uint" enum="bus_type" summary="type of the device connection e.g. Bluetooth" />
|
||
|
<arg name="vendor_id" type="uint" summary="vendor ID of the gamepad device" />
|
||
|
<arg name="product_id" type="uint" summary="product ID of the gamepad device" />
|
||
|
<arg name="version" type="uint" summary="product version of the gamepad device" />
|
||
|
</event>
|
||
|
</interface>
|
||
|
|
||
|
<interface name="zcr_gamepad_v2" version="2">
|
||
|
<description summary="gamepad input device">
|
||
|
The zcr_gamepad_v2 interface represents one or more gamepad input devices,
|
||
|
which are reported as a normalized 'Standard Gamepad' as it is specified
|
||
|
by the W3C Gamepad API at: https://w3c.github.io/gamepad/#remapping
|
||
|
</description>
|
||
|
|
||
|
<request name="destroy" type="destructor">
|
||
|
<description summary="destroy gamepad">
|
||
|
Destroy gamepad. Instances created from this gamepad are unaffected
|
||
|
and should be destroyed separately.
|
||
|
</description>
|
||
|
</request>
|
||
|
|
||
|
<event name="removed">
|
||
|
<description summary="gamepad removed">
|
||
|
Removed event is send when the gamepad is disconnected. The client should
|
||
|
expect no more event and call destroy.
|
||
|
|
||
|
This event cannot be used as destructor as requests (e.g. vibration) might
|
||
|
be added to this interface.
|
||
|
</description>
|
||
|
</event>
|
||
|
|
||
|
<event name="axis">
|
||
|
<description summary="axis change event">
|
||
|
Notification of axis change.
|
||
|
|
||
|
The axis id specifies which axis has changed as defined by the W3C
|
||
|
'Standard Gamepad'.
|
||
|
|
||
|
The value is calibrated and normalized to the -1 to 1 range.
|
||
|
</description>
|
||
|
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||
|
<arg name="axis" type="uint" summary="axis that produced this event"/>
|
||
|
<arg name="value" type="fixed" summary="new value of axis"/>
|
||
|
</event>
|
||
|
|
||
|
<enum name="button_state">
|
||
|
<description summary="physical button state">
|
||
|
Describes the physical state of a button that produced the button
|
||
|
event.
|
||
|
</description>
|
||
|
<entry name="released" value="0" summary="the button is not pressed"/>
|
||
|
<entry name="pressed" value="1" summary="the button is pressed"/>
|
||
|
</enum>
|
||
|
|
||
|
<event name="button">
|
||
|
<description summary="Gamepad button changed">
|
||
|
Notification of button change.
|
||
|
|
||
|
The button id specifies which button has changed as defined by the W3C
|
||
|
'Standard Gamepad'.
|
||
|
|
||
|
A button can have a digital and an analog value. The analog value is
|
||
|
normalized to a 0 to 1 range.
|
||
|
If a button does not provide an analog value, it will be derived from
|
||
|
the digital state.
|
||
|
</description>
|
||
|
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||
|
<arg name="button" type="uint" summary="id of button"/>
|
||
|
<arg name="state" type="uint" enum="button_state" summary="digital state of the button"/>
|
||
|
<arg name="analog" type="fixed" summary="analog value of the button"/>
|
||
|
</event>
|
||
|
|
||
|
<event name="frame">
|
||
|
<description summary="Notifies end of a series of gamepad changes.">
|
||
|
Indicates the end of a set of events that logically belong together.
|
||
|
A client is expected to accumulate the data in all events within the
|
||
|
frame before proceeding.
|
||
|
</description>
|
||
|
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||
|
</event>
|
||
|
|
||
|
<event name="axis_added">
|
||
|
<description summary="an axis is added">
|
||
|
Adds an axis to the gamepad. Only called when the gamepad was created by
|
||
|
gamepad_added_with_device_info. The values are compatible with
|
||
|
input_absinfo.
|
||
|
</description>
|
||
|
<arg name="index" type="uint" summary="An index of the axis" />
|
||
|
<arg name="min_value" type="int" summary="minimum value of the axis" />
|
||
|
<arg name="max_value" type="int" summary="maximum value of the axis" />
|
||
|
<arg name="flat" type="int" summary="input within this value are ignored" />
|
||
|
<arg name="fuzz" type="int" summary="used to filter noise" />
|
||
|
<arg name="resolution" type="int" summary="resolution of input in units per millimeter, or units per radian for rotational axes." />
|
||
|
</event>
|
||
|
|
||
|
<event name="activated">
|
||
|
<description summary="Gamepad activated">
|
||
|
Activates the gamepad i.e. the gamepad will be visible to applications
|
||
|
after this event is fired. All axis_added events should be sent before
|
||
|
this event. Only called when the gamepad was created by
|
||
|
gamepad_added_with_device_info.
|
||
|
</description>
|
||
|
</event>
|
||
|
|
||
|
<!-- added since v2 -->
|
||
|
<event name="vibrator_added" since="2">
|
||
|
<description summary="a vibrator is added">
|
||
|
Adds a vibrator to the gamepad. Only called if server has verified
|
||
|
that gamepad has a vibrator. The vibrator(s) for a gamepad are expected
|
||
|
to be added before the "activated" event is called.
|
||
|
</description>
|
||
|
<arg name="vibrator" type="new_id" interface="zcr_gamepad_vibrator_v2" summary="the gamepad vibrator"/>
|
||
|
</event>
|
||
|
</interface>
|
||
|
|
||
|
<interface name="zcr_gamepad_vibrator_v2" version="2">
|
||
|
<description summary="vibrator interface for a gamepad">
|
||
|
An interface that provides access to the vibrator of a gamepad. Requests can be
|
||
|
sent to make the gamepad vibrate and to stop an ongoing vibration.
|
||
|
</description>
|
||
|
|
||
|
<request name="vibrate" since="2">
|
||
|
<description summary="triggers the vibration event">
|
||
|
Triggers the vibration event on the gamepad vibrator. The gamepad is only allowed to
|
||
|
vibrate while the window is in focus. The values in the timings array are 64-bit integers
|
||
|
and the values in the amplitudes array are unsigned 8-bit integers.
|
||
|
The timings array and the amplitudes array are of the same length.
|
||
|
For each timing/amplitude pair, the amplitude determines the strength of
|
||
|
the vibration and the timing determines the length of the vibration in milliseconds.
|
||
|
Amplitude values must be between 0 and 255. An amplitude of 0 implies no vibration
|
||
|
and any timing/amplitude pair with a timing value of 0 is ignored.
|
||
|
The repeat argument determines the index at which the vibration pattern to repeat begins.
|
||
|
A repeat value of -1 disables repetition. If repetition is enabled, the vibration
|
||
|
pattern will repeat indefinitely until stopped, or when focus is lost.
|
||
|
</description>
|
||
|
<arg name="timings" type="array" summary="array of timing values" />
|
||
|
<arg name="amplitudes" type="array" summary="array of amplitude values" />
|
||
|
<arg name="repeat" type="int" summary="index into the timings array at which to repeat" />
|
||
|
</request>
|
||
|
|
||
|
<request name="cancel_vibration" since="2">
|
||
|
<description summary="cancels the existing vibration event">
|
||
|
Cancels the currently ongoing vibration event on the gamepad vibrator.
|
||
|
</description>
|
||
|
</request>
|
||
|
|
||
|
<request name="destroy" type="destructor" since="2">
|
||
|
<description summary="destroy gamepad vibrator"/>
|
||
|
</request>
|
||
|
</interface>
|
||
|
</protocol>
|