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