| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #pragma once |
| |
| #include <stdint.h> |
| #include <zircon/compiler.h> |
| |
| __BEGIN_CDECLS |
| |
| enum virtio_input_config_select { |
| VIRTIO_INPUT_CFG_UNSET = 0x00, |
| VIRTIO_INPUT_CFG_ID_NAME = 0x01, |
| VIRTIO_INPUT_CFG_ID_SERIAL = 0x02, |
| VIRTIO_INPUT_CFG_ID_DEVIDS = 0x03, |
| VIRTIO_INPUT_CFG_PROP_BITS = 0x10, |
| VIRTIO_INPUT_CFG_EV_BITS = 0x11, |
| VIRTIO_INPUT_CFG_ABS_INFO = 0x12, |
| }; |
| |
| /* These are evdev event types as defined by linux. |
| * |
| * See linux/include/uapi/linux/input-event-codes.h |
| */ |
| enum virtio_input_event_type { |
| VIRTIO_INPUT_EV_SYN = 0x00, |
| VIRTIO_INPUT_EV_KEY = 0x01, |
| VIRTIO_INPUT_EV_REL = 0x02, |
| VIRTIO_INPUT_EV_ABS = 0x03, |
| VIRTIO_INPUT_EV_MSC = 0x04, |
| VIRTIO_INPUT_EV_SW = 0x05, |
| VIRTIO_INPUT_EV_LED = 0x11, |
| VIRTIO_INPUT_EV_SND = 0x12, |
| VIRTIO_INPUT_EV_REP = 0x14, |
| VIRTIO_INPUT_EV_FF = 0x15, |
| VIRTIO_INPUT_EV_PWR = 0x16, |
| VIRTIO_INPUT_EV_FF_STATUS = 0x17, |
| }; |
| |
| /* To populate 'value' in an EV_KEY event. */ |
| enum virtio_input_key_event_value { |
| VIRTIO_INPUT_EV_KEY_RELEASED = 0, |
| VIRTIO_INPUT_EV_KEY_PRESSED = 1, |
| }; |
| |
| /* To populate 'code' in an EV_REL event. */ |
| enum virtio_input_rel_event_code { |
| VIRTIO_INPUT_EV_REL_X = 0, |
| VIRTIO_INPUT_EV_REL_Y = 1, |
| VIRTIO_INPUT_EV_REL_Z = 2, |
| VIRTIO_INPUT_EV_REL_RX = 3, |
| VIRTIO_INPUT_EV_REL_RY = 4, |
| VIRTIO_INPUT_EV_REL_RZ = 5, |
| VIRTIO_INPUT_EV_REL_HWHEEL = 6, |
| VIRTIO_INPUT_EV_REL_DIAL = 7, |
| VIRTIO_INPUT_EV_REL_WHEEL = 8, |
| VIRTIO_INPUT_EV_REL_MISC = 9, |
| }; |
| |
| /* To populate 'code' in an EV_ABS event. */ |
| enum virtio_input_abs_event_code { |
| VIRTIO_INPUT_EV_ABS_X = 0, |
| VIRTIO_INPUT_EV_ABS_Y = 1, |
| VIRTIO_INPUT_EV_ABS_Z = 2, |
| VIRTIO_INPUT_EV_ABS_RX = 3, |
| VIRTIO_INPUT_EV_ABS_RY = 4, |
| VIRTIO_INPUT_EV_ABS_RZ = 5, |
| VIRTIO_INPUT_EV_MT_SLOT = 0x2f, |
| VIRTIO_INPUT_EV_MT_POSITION_X = 0x35, |
| VIRTIO_INPUT_EV_MT_POSITION_Y = 0x36, |
| VIRTIO_INPUT_EV_MT_TRACKING_ID = 0x39, |
| }; |
| |
| typedef struct virtio_input_absinfo { |
| uint32_t min; |
| uint32_t max; |
| uint32_t fuzz; |
| uint32_t flat; |
| uint32_t res; |
| } __PACKED virtio_input_absinfo_t; |
| |
| typedef struct virtio_input_devids { |
| uint16_t bustype; |
| uint16_t vendor; |
| uint16_t product; |
| uint16_t version; |
| } __PACKED virtio_input_devids_t; |
| |
| typedef struct virtio_input_config { |
| uint8_t select; |
| uint8_t subsel; |
| uint8_t size; |
| uint8_t reserved[5]; |
| union { |
| char string[128]; |
| uint8_t bitmap[128]; |
| virtio_input_absinfo_t abs; |
| virtio_input_devids_t ids; |
| } u; |
| |
| } __PACKED virtio_input_config_t; |
| |
| typedef struct virtio_input_event { |
| uint16_t type; |
| uint16_t code; |
| uint32_t value; |
| } __PACKED virtio_input_event_t; |
| |
| __END_CDECLS |