| // Copyright 2015 Google Inc. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| // Definition of input events and associated data types. |
| |
| #ifndef STARBOARD_INPUT_H_ |
| #define STARBOARD_INPUT_H_ |
| |
| #include "starboard/configuration.h" |
| #include "starboard/export.h" |
| #include "starboard/key.h" |
| #include "starboard/types.h" |
| #include "starboard/window.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| // All possible input subsystem types. |
| typedef enum SbInputDeviceType { |
| // Input from some gesture-detection mechanism. Examples include Kinect, |
| // Wiimotes, LG Magic Remotes, etc... |
| // |
| // Produces Move, Grab, Ungrab, Press and Unpress events. |
| kSbInputDeviceTypeGesture, |
| |
| // Input from a gamepad, following the layout provided in the W3C Web Gamepad |
| // API. |
| // |
| // Produces Move, Press and Unpress events. |
| kSbInputDeviceTypeGamepad, |
| |
| // Keyboard input from a traditional keyboard, or game controller chatpad. |
| // |
| // Produces Press and Unpress events. |
| kSbInputDeviceTypeKeyboard, |
| |
| // Input from a microphone that would provide audio data to the caller, who |
| // may then find some way to detect speech or other sounds within it. It may |
| // have processed or filtered the audio in some way before it arrives. |
| // |
| // Produces Audio events. |
| kSbInputDeviceTypeMicrophone, |
| |
| // Input from a traditional mouse. |
| // |
| // Produces Move, Press, and Unpress events. |
| kSbInputDeviceTypeMouse, |
| |
| // Input from a TV remote control-style device. |
| // |
| // Produces Press and Unpress events. |
| kSbInputDeviceTypeRemote, |
| |
| // Input from a speech command analyzer, which is some hardware or software |
| // that, given a set of known phrases, activates when one of the registered |
| // phrases is heard. |
| // |
| // Produces Command events. |
| kSbInputDeviceTypeSpeechCommand, |
| |
| // Input from a single- or multi-touchscreen. |
| // |
| // Produces Move, Press, and Unpress events. |
| kSbInputDeviceTypeTouchScreen, |
| |
| // Input from a touchpad that isn't masquerading as a mouse. |
| // |
| // Produces Move, Press, and Unpress events. |
| kSbInputDeviceTypeTouchPad, |
| } SbInputDeviceType; |
| |
| // The action that an input event represents. |
| typedef enum SbInputEventType { |
| // Receipt of Audio. Some audio data was received by the input microphone. |
| kSbInputEventTypeAudio, |
| |
| // Receipt of a command. A command was received from some semantic source, |
| // like a speech recognizer. |
| kSbInputEventTypeCommand, |
| |
| // Grab activation. In some gesture systems a grab gesture is dfferent from an |
| // activate gesture. An Ungrab event will follow when the grab gesture is |
| // terminated. |
| kSbInputEventTypeGrab, |
| |
| // Device Movement. In the case of Mouse, and perhaps Gesture, the movement |
| // tracks an absolute cursor position. In the case of TouchPad, only relative |
| // movements are provided. |
| kSbInputEventTypeMove, |
| |
| // Key or button press activation. This could be a key on a keyboard, a button |
| // on a mouse or game controller, or a push from a touch screen or gesture. An |
| // Unpress event will be delivered once the key/button/finger is |
| // raised. Injecting repeat presses is up to the client. |
| kSbInputEventTypePress, |
| |
| // Grab deactivation. An Ungrab event will be sent when a grab gesture is |
| // terminated. |
| kSbInputEventTypeUngrab, |
| |
| // Key or button deactivation. The counterpart to the Press event, this event |
| // is sent when the key or button being pressed is released. |
| kSbInputEventTypeUnpress, |
| } SbInputEventType; |
| |
| // A 2-dimensional vector used to represent points and motion vectors. |
| typedef struct SbInputVector { |
| int x; |
| int y; |
| } SbInputVector; |
| |
| // Event data for kSbEventTypeInput events. |
| typedef struct SbInputData { |
| // The window that this input was generated at. |
| SbWindow window; |
| |
| // The type of input event this represents. |
| SbInputEventType type; |
| |
| // The type of device that generated this input event. |
| SbInputDeviceType device_type; |
| |
| // An identifier unique amongst all connected devices. |
| int device_id; |
| |
| // An identifier that indicates which keyboard key or mouse button was |
| // involved in this event, if any. All known keys for all devices are mapped |
| // to a single ID space, defined by the enum SbKey in key.h. |
| SbKey key; |
| |
| // The character that corresponds to the key. For an external keyboard, this |
| // character also depends on the language of keyboard type. Will be 0 if there |
| // is no corresponding character. |
| wchar_t character; |
| |
| // The location of the specified key, in cases where there are multiple |
| // instances of the button on the keyboard. The "shift" key, for example. |
| SbKeyLocation key_location; |
| |
| // Key modifiers (e.g. Ctrl, Chift) held down during this input event. |
| unsigned int key_modifiers; |
| |
| // The (x, y) coordinates of the persistent cursor controlled by this |
| // device. Will be 0 if not applicable. |
| SbInputVector position; |
| |
| // The relative motion vector of this input. Will be 0 if not applicable. |
| SbInputVector delta; |
| } SbInputData; |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif // STARBOARD_INPUT_H_ |