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 <[email protected]> Signed-off-by: Jingkui Wang <[email protected]> --- 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 <[email protected]> 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 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
