[PATCH] protocol: Add gaming input protocol
Jingkui Wang
jkwang at google.com
Tue Jan 17 21:15:07 UTC 2017
Gaming input protocol works as an extension to support gaming devices.
Currently, it only supports game pad.
Gamepad protocol complies W3C Gamepad API at:
https://w3c.github.io/gamepad/#remapping
Signed-off-by: Dennis Kempin <denniskempin at chromium.org>
Signed-off-by: Jingkui Wang <jkwang at google.com>
---
Makefile.am | 1 +
unstable/gaming-input/README | 4 +
unstable/gaming-input/gaming-input-unstable-v1.xml | 150 +++++++++++++++++++++
3 files changed, 155 insertions(+)
create mode 100644 unstable/gaming-input/README
create mode 100644 unstable/gaming-input/gaming-input-unstable-v1.xml
diff --git a/Makefile.am b/Makefile.am
index e693afa..9e65775 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,6 +12,7 @@ unstable_protocols = \
unstable/tablet/tablet-unstable-v2.xml \
unstable/xdg-foreign/xdg-foreign-unstable-v1.xml \
unstable/idle-inhibit/idle-inhibit-unstable-v1.xml \
+ unstable/gaming-input/gaming-input-unstable-v1.xml \
$(NULL)
stable_protocols = \
diff --git a/unstable/gaming-input/README b/unstable/gaming-input/README
new file mode 100644
index 0000000..261f5ba
--- /dev/null
+++ b/unstable/gaming-input/README
@@ -0,0 +1,4 @@
+Gaming input protocol
+
+Maintainers:
+Dennis Kempin <denniskempin at chromium.org>
diff --git a/unstable/gaming-input/gaming-input-unstable-v1.xml b/unstable/gaming-input/gaming-input-unstable-v1.xml
new file mode 100644
index 0000000..c1ce437
--- /dev/null
+++ b/unstable/gaming-input/gaming-input-unstable-v1.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="gaming_input_unstable_v1">
+
+ <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_v1" version="1">
+ <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_v1"/>
+ <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.
+ </request>
+ </interface>
+
+ <interface name="zcr_gaming_seat_v1" 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.
+ </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_v1" summary="new connected gamepad"/>
+ </event>
+ </interface>
+
+ <interface name="zcr_gamepad_v1" version="1">
+ <description summary="gamepad input device">
+ The zcr_gamepad_v1 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 object"/>
+ </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>
+ </interface>
+</protocol>
--
2.6.6
More information about the wayland-devel
mailing list