1<!-- 2 Copyright 2011 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15--> 16 17# Dumpsys # 18 19The `dumpsys` tool runs on the device and dumps interesting information 20about the status of system services. 21 22## Usage ## 23 24The input system is part of the window manager. To dump its state, 25run the following command. 26 27 $ adb shell su -- dumpsys window 28 29 WINDOW MANAGER INPUT (dumpsys window input) 30 Event Hub State: 31 BuiltInKeyboardId: -1 32 Devices: 33 ... 34 35The set of information that is reported varies depending on the version of Android. 36 37### Event Hub State ### 38 39The `EventHub` component is responsible for communicating with the kernel device 40drivers and identifying device capabilities. Accordingly, its state shows 41information about how devices are configured. 42 43 Event Hub State: 44 BuiltInKeyboardId: -1 45 Devices: 46 3: tuna-gpio-keypad 47 Classes: 0x00000001 48 Path: /dev/input/event2 49 Location: 50 UniqueId: 51 Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000 52 KeyLayoutFile: /system/usr/keylayout/tuna-gpio-keypad.kl 53 KeyCharacterMapFile: /system/usr/keychars/tuna-gpio-keypad.kcm 54 ConfigurationFile: 55 5: Tuna Headset Jack 56 Classes: 0x00000080 57 Path: /dev/input/event5 58 Location: ALSA 59 UniqueId: 60 Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000 61 KeyLayoutFile: 62 KeyCharacterMapFile: 63 ConfigurationFile: 64 6: Melfas MMSxxx Touchscreen 65 Classes: 0x00000014 66 Path: /dev/input/event1 67 Location: 3-0048/input0 68 UniqueId: 69 Identifier: bus=0x0018, vendor=0x0000, product=0x0000, version=0x0000 70 KeyLayoutFile: 71 KeyCharacterMapFile: 72 ConfigurationFile: /system/usr/idc/Melfas_MMSxxx_Touchscreen.idc 73 7: Motorola Bluetooth Wireless Keyboard 74 Classes: 0x8000000b 75 Path: /dev/input/event6 76 Location: 0C:DF:A4:B3:2D:BA 77 UniqueId: 00:0F:F6:80:02:CD 78 Identifier: bus=0x0005, vendor=0x22b8, product=0x093d, version=0x0288 79 KeyLayoutFile: /system/usr/keylayout/Vendor_22b8_Product_093d.kl 80 KeyCharacterMapFile: /system/usr/keychars/Generic.kcm 81 ConfigurationFile: 82 83#### Things To Look For #### 84 851. All of the expected input devices are present. 86 872. Each input device has an appropriate key layout file, key character map file 88 and input device configuration file. If the files are missing or contain 89 syntax errors, then they will not be loaded. 90 913. Each input device is being classified correctly. The bits in the `Classes` 92 field correspond to flags in `EventHub.h` such as `INPUT_DEVICE_CLASS_TOUCH_MT`. 93 944. The `BuiltInKeyboardId` is correct. If the device does not have a built-in keyboard, 95 then the id must be `-1`, otherwise it should be the id of the built-in keyboard. 96 97 If you observe that the `BuiltInKeyboardId` is not `-1` but it should be, then 98 you are missing a key character map file for a special function keypad somewhere. 99 Special function keypad devices should have key character map files that contain 100 just the line `type SPECIAL_FUNCTION` (that's what in the `tuna-gpio-keykad.kcm` 101 file we see mentioned above). 102 103### Input Reader State ### 104 105The `InputReader` is responsible for decoding input events from the kernel. 106Its state dump shows information about how each input device is configured 107and recent state changes that occurred, such as key presses or touches on 108the touch screen. 109 110This is what a special function keypad looks like: 111 112 Input Reader State: 113 Device 3: tuna-gpio-keypad 114 IsExternal: false 115 Sources: 0x00000101 116 KeyboardType: 1 117 Keyboard Input Mapper: 118 Parameters: 119 AssociatedDisplayId: -1 120 OrientationAware: false 121 KeyboardType: 1 122 Orientation: 0 123 KeyDowns: 0 keys currently down 124 MetaState: 0x0 125 DownTime: 75816923828000 126 127Here is a touch screen. Notice all of the information about the resolution of 128the device and the calibration parameters that were used. 129 130 Device 6: Melfas MMSxxx Touchscreen 131 IsExternal: false 132 Sources: 0x00001002 133 KeyboardType: 0 134 Motion Ranges: 135 X: source=0x00001002, min=0.000, max=719.001, flat=0.000, fuzz=0.999 136 Y: source=0x00001002, min=0.000, max=1279.001, flat=0.000, fuzz=0.999 137 PRESSURE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000 138 SIZE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000 139 TOUCH_MAJOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000 140 TOUCH_MINOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000 141 TOOL_MAJOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000 142 TOOL_MINOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000 143 Touch Input Mapper: 144 Parameters: 145 GestureMode: spots 146 DeviceType: touchScreen 147 AssociatedDisplay: id=0, isExternal=false 148 OrientationAware: true 149 Raw Touch Axes: 150 X: min=0, max=720, flat=0, fuzz=0, resolution=0 151 Y: min=0, max=1280, flat=0, fuzz=0, resolution=0 152 Pressure: min=0, max=255, flat=0, fuzz=0, resolution=0 153 TouchMajor: min=0, max=30, flat=0, fuzz=0, resolution=0 154 TouchMinor: unknown range 155 ToolMajor: unknown range 156 ToolMinor: unknown range 157 Orientation: unknown range 158 Distance: unknown range 159 TiltX: unknown range 160 TiltY: unknown range 161 TrackingId: min=0, max=65535, flat=0, fuzz=0, resolution=0 162 Slot: min=0, max=9, flat=0, fuzz=0, resolution=0 163 Calibration: 164 touch.size.calibration: diameter 165 touch.size.scale: 10.000 166 touch.size.bias: 0.000 167 touch.size.isSummed: false 168 touch.pressure.calibration: amplitude 169 touch.pressure.scale: 0.005 170 touch.orientation.calibration: none 171 touch.distance.calibration: none 172 SurfaceWidth: 720px 173 SurfaceHeight: 1280px 174 SurfaceOrientation: 0 175 Translation and Scaling Factors: 176 XScale: 0.999 177 YScale: 0.999 178 XPrecision: 1.001 179 YPrecision: 1.001 180 GeometricScale: 0.999 181 PressureScale: 0.005 182 SizeScale: 0.033 183 OrientationCenter: 0.000 184 OrientationScale: 0.000 185 DistanceScale: 0.000 186 HaveTilt: false 187 TiltXCenter: 0.000 188 TiltXScale: 0.000 189 TiltYCenter: 0.000 190 TiltYScale: 0.000 191 Last Button State: 0x00000000 192 Last Raw Touch: pointerCount=0 193 Last Cooked Touch: pointerCount=0 194 195Here is an external keyboard / mouse combo HID device. (This device doesn't actually 196have a mouse but its HID descriptor says it does.) 197 198 Device 7: Motorola Bluetooth Wireless Keyboard 199 IsExternal: true 200 Sources: 0x00002103 201 KeyboardType: 2 202 Motion Ranges: 203 X: source=0x00002002, min=0.000, max=719.000, flat=0.000, fuzz=0.000 204 Y: source=0x00002002, min=0.000, max=1279.000, flat=0.000, fuzz=0.000 205 PRESSURE: source=0x00002002, min=0.000, max=1.000, flat=0.000, fuzz=0.000 206 VSCROLL: source=0x00002002, min=-1.000, max=1.000, flat=0.000, fuzz=0.000 207 Keyboard Input Mapper: 208 Parameters: 209 AssociatedDisplayId: -1 210 OrientationAware: false 211 KeyboardType: 2 212 Orientation: 0 213 KeyDowns: 0 keys currently down 214 MetaState: 0x0 215 DownTime: 75868832946000 216 Cursor Input Mapper: 217 Parameters: 218 AssociatedDisplayId: 0 219 Mode: pointer 220 OrientationAware: false 221 XScale: 1.000 222 YScale: 1.000 223 XPrecision: 1.000 224 YPrecision: 1.000 225 HaveVWheel: true 226 HaveHWheel: false 227 VWheelScale: 1.000 228 HWheelScale: 1.000 229 Orientation: 0 230 ButtonState: 0x00000000 231 Down: false 232 DownTime: 0 233 234Here is a joystick. Notice how all of the axes have been scaled to a normalized 235range. The axis mapping can be configured using key layout files. 236 237 Device 18: Logitech Logitech Cordless RumblePad 2 238 IsExternal: true 239 Sources: 0x01000511 240 KeyboardType: 1 241 Motion Ranges: 242 X: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000 243 Y: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000 244 Z: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000 245 RZ: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000 246 HAT_X: source=0x01000010, min=-1.000, max=1.000, flat=0.000, fuzz=0.000 247 HAT_Y: source=0x01000010, min=-1.000, max=1.000, flat=0.000, fuzz=0.000 248 Keyboard Input Mapper: 249 Parameters: 250 AssociatedDisplayId: -1 251 OrientationAware: false 252 KeyboardType: 1 253 Orientation: 0 254 KeyDowns: 0 keys currently down 255 MetaState: 0x0 256 DownTime: 675270841000 257 Joystick Input Mapper: 258 Axes: 259 X: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000 260 scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000 261 rawAxis=0, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0 262 Y: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000 263 scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000 264 rawAxis=1, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0 265 Z: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000 266 scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000 267 rawAxis=2, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0 268 RZ: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000 269 scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000 270 rawAxis=5, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0 271 HAT_X: min=-1.00000, max=1.00000, flat=0.00000, fuzz=0.00000 272 scale=1.00000, offset=0.00000, highScale=1.00000, highOffset=0.00000 273 rawAxis=16, rawMin=-1, rawMax=1, rawFlat=0, rawFuzz=0, rawResolution=0 274 HAT_Y: min=-1.00000, max=1.00000, flat=0.00000, fuzz=0.00000 275 scale=1.00000, offset=0.00000, highScale=1.00000, highOffset=0.00000 276 rawAxis=17, rawMin=-1, rawMax=1, rawFlat=0, rawFuzz=0, rawResolution=0 277 278At the end of the input reader dump there is some information about global configuration 279parameters such as the mouse pointer speed. 280 281 Configuration: 282 ExcludedDeviceNames: [] 283 VirtualKeyQuietTime: 0.0ms 284 PointerVelocityControlParameters: scale=1.000, lowThreshold=500.000, highThreshold=3000.000, acceleration=3.000 285 WheelVelocityControlParameters: scale=1.000, lowThreshold=15.000, highThreshold=50.000, acceleration=4.000 286 PointerGesture: 287 Enabled: true 288 QuietInterval: 100.0ms 289 DragMinSwitchSpeed: 50.0px/s 290 TapInterval: 150.0ms 291 TapDragInterval: 300.0ms 292 TapSlop: 20.0px 293 MultitouchSettleInterval: 100.0ms 294 MultitouchMinDistance: 15.0px 295 SwipeTransitionAngleCosine: 0.3 296 SwipeMaxWidthRatio: 0.2 297 MovementSpeedRatio: 0.8 298 ZoomSpeedRatio: 0.3 299 300#### Things To Look For #### 301 3021. All of the expected input devices are present. 303 3042. Each input device has been configured appropriately. Especially check the 305 touch screen and joystick axes. 306 307### Input Dispatcher State ### 308 309The `InputDispatcher` is responsible for sending input events to applications. 310Its state dump shows information about which window is being touched, the 311state of the input queue, whether an ANR is in progress, and so on. 312 313 Input Dispatcher State: 314 DispatchEnabled: 1 315 DispatchFrozen: 0 316 FocusedApplication: name='AppWindowToken{41b03a10 token=Token{41bdcf78 ActivityRecord{418ab728 com.android.settings/.Settings}}}', dispatchingTimeout=5000.000ms 317 FocusedWindow: name='Window{41908458 Keyguard paused=false}' 318 TouchDown: false 319 TouchSplit: false 320 TouchDeviceId: -1 321 TouchSource: 0x00000000 322 TouchedWindows: <none> 323 Windows: 324 0: name='Window{41bd5b18 NavigationBar paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x05800068, type=0x000007e3, layer=181000, frame=[0,1184][720,1280], scale=1.000000, touchableRegion=[0,1184][720,1280], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms 325 1: name='Window{41a19770 RecentsPanel paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01820100, type=0x000007de, layer=151000, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms 326 2: name='Window{41a78768 StatusBar paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x00800048, type=0x000007d0, layer=141000, frame=[0,0][720,50], scale=1.000000, touchableRegion=[0,0][720,50], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms 327 3: name='Window{41877570 StatusBarExpanded paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x01811328, type=0x000007e1, layer=131005, frame=[0,-1184][720,-114], scale=1.000000, touchableRegion=[0,-1184][720,-114], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms 328 4: name='Window{41bedf20 TrackingView paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01020300, type=0x000007e1, layer=131000, frame=[0,-1032][720,102], scale=1.000000, touchableRegion=[0,-1032][720,102], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms 329 5: name='Window{41908458 Keyguard paused=false}', paused=false, hasFocus=true, hasWallpaper=false, visible=true, canReceiveKeys=true, flags=0x15120800, type=0x000007d4, layer=111000, frame=[0,50][720,1184], scale=1.000000, touchableRegion=[0,50][720,1184], inputFeatures=0x00000000, ownerPid=205, ownerUid=1000, dispatchingTimeout=5000.000ms 330 6: name='Window{4192cc30 com.android.phasebeam.PhaseBeamWallpaper paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x00000308, type=0x000007dd, layer=21010, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=429, ownerUid=10046, dispatchingTimeout=5000.000ms 331 7: name='Window{41866c00 com.android.settings/com.android.settings.Settings paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01810100, type=0x00000001, layer=21005, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=19000, ownerUid=1000, dispatchingTimeout=5000.000ms 332 8: name='Window{4197c858 com.android.launcher/com.android.launcher2.Launcher paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01910100, type=0x00000001, layer=21000, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=515, ownerUid=10032, dispatchingTimeout=5000.000ms 333 MonitoringChannels: <none> 334 InboundQueue: length=0 335 ActiveConnections: <none> 336 AppSwitch: not pending 337 Configuration: 338 MaxEventsPerSecond: 90 339 KeyRepeatDelay: 50.0ms 340 KeyRepeatTimeout: 500.0ms 341 342#### Things To Look For #### 343 3441. In general, all input events are being processed as expected. 345 3462. If you touch the touch screen and run dumpsys at the same time, then the `TouchedWindows` 347 line should show the window that you are touching. 348