enum EInputMode { k_EInputModeUnknown = 0; k_EInputModeMouse = 1; k_EInputModeController = 2; k_EInputModeMouseAndController = 3; } enum EMouseMode { k_EMouseModeUnknown = 0; k_EMouseModeRelativeCursor = 1; k_EMouseModeAbsoluteCursor = 2; k_EMouseModeTouch = 3; k_EMouseModeRelative = 4; } enum EControllerElementType { k_EControllerElementTypeNone = -1; k_EControllerElementTypeThumb = 0; k_EControllerElementTypeButtonSteam = 1; k_EControllerElementTypeJoystickLeft = 2; k_EControllerElementTypeButtonJoystickLeft = 3; k_EControllerElementTypeJoystickRight = 4; k_EControllerElementTypeButtonJoystickRight = 5; k_EControllerElementTypeDPad = 6; k_EControllerElementTypeButtonA = 7; k_EControllerElementTypeButtonB = 8; k_EControllerElementTypeButtonX = 9; k_EControllerElementTypeButtonY = 10; k_EControllerElementTypeButtonSelect = 11; k_EControllerElementTypeButtonStart = 12; k_EControllerElementTypeButtonTriggerLeft = 13; k_EControllerElementTypeButtonTriggerRight = 14; k_EControllerElementTypeButtonBumperLeft = 15; k_EControllerElementTypeButtonBumperRight = 16; k_EControllerElementTypeButtonMacro0 = 17; k_EControllerElementTypeButtonMacro1 = 18; k_EControllerElementTypeButtonMacro2 = 19; k_EControllerElementTypeButtonMacro3 = 20; k_EControllerElementTypeButtonMacro4 = 21; k_EControllerElementTypeButtonMacro5 = 22; k_EControllerElementTypeButtonMacro6 = 23; k_EControllerElementTypeButtonMacro7 = 24; k_EControllerElementTypeTrackpadCenter = 25; k_EControllerElementTypeTrackpadLeft = 26; k_EControllerElementTypeTrackpadRight = 27; k_EControllerElementTypeKeyboard = 28; k_EControllerElementTypeMagnifyingGlass = 29; k_EControllerElementTypeButtonMacro1Finger = 30; k_EControllerElementTypeButtonMacro2Finger = 31; k_EControllerElementTypeRecordInput = 32; k_EControllerElementTypePlaybackInput = 33; k_EControllerElementTypePaste = 34; k_EControllerElementTypeMax = 35; } message CVirtualControllerElement { optional .EControllerElementType type = 1 [default = k_EControllerElementTypeNone]; optional bool visible = 2; optional float x_position = 3; optional float y_position = 4; optional float x_scale = 5 [default = 1]; optional float y_scale = 6 [default = 1]; } message CVirtualControllerColor { optional float r = 1 [default = 1]; optional float g = 2 [default = 1]; optional float b = 3 [default = 1]; optional float a = 4 [default = 1]; } message CVirtualControllerLayout { optional int32 layout_version = 1; optional int32 actionset_id = 2; repeated .CVirtualControllerElement elements = 4; optional .CVirtualControllerColor color = 5; } message CVirtualControllerLayouts { repeated .CVirtualControllerLayout layouts = 1; optional .EInputMode input_mode = 2 [default = k_EInputModeController]; optional .EMouseMode mouse_mode = 3 [default = k_EMouseModeUnknown]; optional float trackpad_sensitivity = 4 [default = 1]; optional bool pinch_zoom_enabled = 5 [default = false]; optional float pinch_zoom_x = 6 [default = 0]; optional float pinch_zoom_y = 7 [default = 0]; optional float pinch_zoom_scale = 8 [default = 1]; optional bool shaken = 9; optional bool mouse_offscreen = 10; } message CVirtualControllerConfig { message Control { optional string name = 1; optional string icon = 2; optional int32 input_source = 3; optional int32 input_mode = 4; optional int32 input_element = 5; optional int32 output_gamepad = 6; optional int32 output_keyboard = 7; optional int32 output_mouse = 8; optional string icon_foreground = 9; optional string icon_background = 10; optional bool input_toggle = 11; optional int32 input_activate_stick_or_trackpad = 12; optional int32 activation_type = 13; optional int32 long_press_ms = 14; optional int32 double_press_ms = 15; } message ActionSet { optional int32 id = 1; optional int32 parent_id = 2; optional string name = 3; repeated .CVirtualControllerConfig.Control controls = 4; } optional string name = 1; repeated .CVirtualControllerConfig.ActionSet actionsets = 2; optional .EMouseMode default_mouse_mode = 3 [default = k_EMouseModeAbsoluteCursor]; } message CVirtualControllerLayoutPackage { optional uint32 appid = 1; optional uint64 creator = 2; optional uint32 initial_revision = 3; optional uint32 saved_revision = 4; optional .CVirtualControllerConfig config = 5; optional .CVirtualControllerLayouts layouts = 6; } message CVirtualControllerGlobalConfig { optional bool feedback_enabled = 1; optional bool gyroscope_enabled = 2 [default = true]; optional bool auto_fade_enabled = 3 [default = true]; optional bool rumble_enabled = 4 [default = true]; optional bool shake_fade_enabled = 5; }