| /* |
| * Copyright (C) 2023 The Android Open Source Project |
| * |
| * 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. |
| */ |
| |
| syntax = "proto2"; |
| |
| package android.os.statsd.input; |
| |
| import "frameworks/proto_logging/stats/atoms.proto"; |
| import "frameworks/proto_logging/stats/atom_field_options.proto"; |
| import "frameworks/proto_logging/stats/enums/input/enums.proto"; |
| |
| option java_package = "com.android.os.input"; |
| option java_multiple_files = true; |
| |
| extend Atom { |
| optional KeyboardConfigured keyboard_configured = 682 [(module) = "framework"]; |
| optional KeyboardSystemsEventReported keyboard_systems_event_reported = 683 [(module) = "framework"]; |
| optional InputDeviceUsageReported inputdevice_usage_reported = 686 [(module) = "framework"]; |
| |
| optional TouchpadUsage touchpad_usage = 10191 [(module) = "framework"]; |
| } |
| |
| // Keyboard layout configured when the device is connected |
| message KeyboardLayoutConfig { |
| // Keyboard configuration details provided by device |
| // Layout type mappings found at: |
| // frameworks/base/core/res/res/values/attrs.xml |
| optional int32 keyboard_layout_type = 1; |
| // Keyboard language tag (e.g. en-US, ru-Cyrl, etc) provided by device. |
| // This will follow BCP-47 language tag standards. |
| optional string keyboard_language_tag = 2; |
| // Selected PK layout name (e.g. English(US), English(Dvorak), etc.) |
| optional string keyboard_layout_name = 3; |
| // Criteria for layout selection |
| optional int32 layout_selection_criteria = 4; |
| // Keyboard layout type provided by IME |
| optional int32 ime_layout_type = 5; |
| // Language tag provided by IME (e.g. en-US, ru-Cyrl etc.) |
| optional string ime_language_tag = 6; |
| } |
| |
| // Message containing the repeated field for KeyboardLayoutConfig |
| message RepeatedKeyboardLayoutConfig { |
| repeated KeyboardLayoutConfig keyboard_layout_config = 1; |
| } |
| |
| /** |
| * Logged when an external physical keyboard (PK) is connected and configured |
| * Also logs every time there is a configuration change for the keyboard, |
| * and the current configuration |
| * |
| * Logged from: |
| * frameworks/base/services/core/java/com/android/server/input |
| */ |
| message KeyboardConfigured { |
| // Tracking if this is the first time the device is configured |
| optional bool is_first_time_configuration = 1; |
| // The Input Device Vendor ID |
| optional int32 vendor_id = 2; |
| // The Input Device Product ID |
| optional int32 product_id = 3; |
| // Keyboard configuration details |
| optional RepeatedKeyboardLayoutConfig repeated_keyboard_layout_config = 4 [(log_mode) = MODE_BYTES]; |
| // The Input Device Bus ID |
| optional android.input.InputDeviceBus device_bus = 5; |
| } |
| |
| /** |
| * Logs shortcut usage on the physical keyboard |
| * Atom pushed when shortcut is used |
| * |
| * Logged from: |
| * frameworks/base/.../PhoneWindowManager.java |
| * frameworks/base/.../PhoneWindow.java |
| * frameworks/native/inputflinger |
| */ |
| message KeyboardSystemsEventReported { |
| // The Input Device Vendor ID |
| optional int32 vendor_id = 1; |
| // The Input Device Product ID |
| optional int32 product_id = 2; |
| // Key event that occurred |
| optional android.input.KeyboardSystemEvent keyboard_system_event = 3; |
| // Key pressed to trigger the keyboard event |
| repeated int32 key_code = 4; |
| // Flag based modifier state when keyboard event was triggered |
| // This field represents the decimal version of the flag in binary |
| optional int32 modifier_state = 5; |
| // The Input Device Bus ID |
| optional android.input.InputDeviceBus device_bus = 6; |
| } |
| |
| /** |
| * Logs input device usage information when a usage session is detected. |
| * Pushed when the system identifies the end of a usage session. |
| * |
| * Logged from: |
| * frameworks/native/services/inputflinger |
| */ |
| message InputDeviceUsageReported { |
| // The Input Device Vendor ID |
| // Note that the meaning of the vendor ID may depend on the bus through |
| // which the device is connected. For example, the identifiers used for USI |
| // styluses are different than those for USB or Bluetooth devices. |
| optional int32 vendor_id = 1; |
| // The Input Device Product ID |
| // Note that the meaning of the product ID may depend on the bus through |
| // which the device is connected. For example, the identifiers used for USI |
| // styluses are different than those for USB or Bluetooth devices. |
| optional int32 product_id = 2; |
| // The Input Device Version ID |
| optional int32 version_id = 3; |
| // The Input Device Bus ID |
| optional android.input.InputDeviceBus device_bus = 4; |
| |
| // The duration of the aggregated usage session for this Input Device, in |
| // milliseconds. |
| // (The int32_t will overflow at ~25 days) |
| optional int32 usage_duration_millis = 5; |
| |
| // The breakdown of this usage session by source. |
| repeated android.input.InputDeviceUsageType usage_sources = 6; |
| // The breakdown of usage duration for each of the {@link usage_sources} |
| // reported above, in milliseconds. |
| repeated int32 usage_durations_per_source = 7; |
| |
| // The breakdown of this usage session by uid. |
| repeated int32 uids = 8 [(is_uid) = true]; |
| // The breakdown of usage duration for each of the {@link uids} reported |
| // above, in milliseconds. |
| repeated int32 usage_durations_per_uid = 9; |
| } |
| |
| /** |
| * Logs information about the usage of a touchpad. |
| * |
| * Logged from: |
| * frameworks/native/services/inputflinger |
| */ |
| message TouchpadUsage { |
| // The Input Device Vendor ID |
| optional int32 vendor_id = 1; |
| // The Input Device Product ID |
| optional int32 product_id = 2; |
| // The Input Device Version ID |
| optional int32 version_id = 3; |
| // The Input Device Bus ID |
| optional android.input.InputDeviceBus device_bus = 4; |
| |
| // The number of touches that are classified as fingers by the touchpad for |
| // their entire duration (i.e. from the touch down event until the lift |
| // event). |
| optional int32 finger_count = 5; |
| // The number of touches that are classified as palms by the touchpad at |
| // least once during their duration. |
| optional int32 palm_count = 6; |
| |
| // The number of two-finger swipes recognized by the framework. |
| optional int32 two_finger_swipe_gesture_count = 7; |
| // The number of three-finger swipes recognized by the framework. |
| optional int32 three_finger_swipe_gesture_count = 8; |
| // The number of four-finger swipes recognized by the framework. |
| optional int32 four_finger_swipe_gesture_count = 9; |
| // The number of pinch gestures recognized by the framework. |
| optional int32 pinch_gesture_count = 10; |
| } |