blob: 123eedbcd7d73661b97efda191c5ee7cfbdb126a [file] [log] [blame]
/*
* 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];
}
/**
* 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
optional int32 modifier_state = 5;
}
/**
* 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.
// (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.
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.
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;
}