// Copyright 2017 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. module device.mojom; // This input_service.mojom defines structs and interfaces for providing // information and notifiations about connected/disconnected input/HID // devices. enum InputDeviceSubsystem { SUBSYSTEM_HID = 0, SUBSYSTEM_INPUT = 1, SUBSYSTEM_UNKNOWN = 2, }; enum InputDeviceType { TYPE_BLUETOOTH = 0, TYPE_USB = 1, TYPE_SERIO = 2, TYPE_UNKNOWN = 3, }; struct InputDeviceInfo { string id; string name; InputDeviceSubsystem subsystem; InputDeviceType type; bool is_accelerometer; bool is_joystick; bool is_key; bool is_keyboard; bool is_mouse; bool is_tablet; bool is_touchpad; bool is_touchscreen; }; interface InputDeviceManagerClient { // Notifies the client that a device is added. InputDeviceAdded(InputDeviceInfo device_info); // Notifies the client that a device is removed. InputDeviceRemoved(string id); }; interface InputDeviceManager { // Returns list of all currently connected input/hid devices and set client // to InputDeviceManager. The implementation of InputDeviceManager guarantees // the returned callback is always posted earlier than InputDeviceAdded() // and InputDeviceRemoved(). GetDevicesAndSetClient(associated InputDeviceManagerClient client) => (array devices); // Returns list of all currently connected input/hid devices only. GetDevices() => (array devices); };