/* Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /** * This file defines the PPB_Gamepad interface, which * provides access to gamepad devices. */ [generate_thunk] label Chrome { M19 = 1.0 }; /** * The data for one gamepad device. */ [assert_size(472)] struct PP_GamepadSampleData { /** * Number of valid elements in the |axes| array. */ uint32_t axes_length; /** * Normalized values for the axes, indices valid up to |axes_length|-1. Axis * values range from -1..1, and are in order of "importance". */ float_t[16] axes; /** * Number of valid elements in the |buttons| array. */ uint32_t buttons_length; /** * Normalized values for the buttons, indices valid up to |buttons_length| * - 1. Button values range from 0..1, and are in order of importance. */ float_t[32] buttons; /** * Monotonically increasing value that is incremented when the data have * been updated. */ double_t timestamp; /** * Identifier for the type of device/manufacturer. */ uint16_t[128] id; /** * Is there a gamepad connected at this index? If this is false, no other * data in this structure is valid. */ PP_Bool connected; /* Padding to make the struct the same size between 64 and 32. */ char[4] unused_pad_; }; /** * The data for all gamepads connected to the system. */ [assert_size(1896)] struct PP_GamepadsSampleData { /** * Number of valid elements in the |items| array. */ uint32_t length; /* Padding to make the struct the same size between 64 and 32. */ char[4] unused_pad_; /** * Data for an individual gamepad device connected to the system. */ PP_GamepadSampleData[4] items; }; /** * The PPB_Gamepad interface allows retrieving data from * gamepad/joystick devices that are connected to the system. */ [version=1.0, macro="PPB_GAMEPAD_INTERFACE", singleton] interface PPB_Gamepad { /** * Samples the current state of the available gamepads. */ [always_set_output_parameters] void Sample( [in] PP_Instance instance, [out] PP_GamepadsSampleData data); };