• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 package com.android.server.input;
18 
19 import android.annotation.NonNull;
20 import android.annotation.Nullable;
21 import android.hardware.display.DisplayTopologyGraph;
22 import android.hardware.display.DisplayViewport;
23 import android.hardware.input.InputSensorInfo;
24 import android.hardware.lights.Light;
25 import android.os.IBinder;
26 import android.os.MessageQueue;
27 import android.util.SparseArray;
28 import android.view.InputApplicationHandle;
29 import android.view.InputChannel;
30 import android.view.InputEvent;
31 import android.view.PointerIcon;
32 import android.view.VerifiedInputEvent;
33 
34 import java.util.List;
35 
36 /**
37  * An interface for the native methods of InputManagerService. We use a public interface so that
38  * this can be mocked for testing by Mockito.
39  */
40 interface NativeInputManagerService {
41 
start()42     void start();
43 
setDisplayViewports(DisplayViewport[] viewports)44     void setDisplayViewports(DisplayViewport[] viewports);
45 
setDisplayTopology(DisplayTopologyGraph topologyGraph)46     void setDisplayTopology(DisplayTopologyGraph topologyGraph);
47 
getScanCodeState(int deviceId, int sourceMask, int scanCode)48     int getScanCodeState(int deviceId, int sourceMask, int scanCode);
49 
getKeyCodeState(int deviceId, int sourceMask, int keyCode)50     int getKeyCodeState(int deviceId, int sourceMask, int keyCode);
51 
getSwitchState(int deviceId, int sourceMask, int sw)52     int getSwitchState(int deviceId, int sourceMask, int sw);
53 
setKeyRemapping(int[] fromKeyCodes, int[] toKeyCodes)54     void setKeyRemapping(int[] fromKeyCodes, int[] toKeyCodes);
55 
hasKeys(int deviceId, int sourceMask, int[] keyCodes, boolean[] keyExists)56     boolean hasKeys(int deviceId, int sourceMask, int[] keyCodes, boolean[] keyExists);
57 
getKeyCodeForKeyLocation(int deviceId, int locationKeyCode)58     int getKeyCodeForKeyLocation(int deviceId, int locationKeyCode);
59 
createInputChannel(String name)60     InputChannel createInputChannel(String name);
61 
createInputMonitor(int displayId, String name, int pid)62     InputChannel createInputMonitor(int displayId, String name, int pid);
63 
removeInputChannel(IBinder connectionToken)64     void removeInputChannel(IBinder connectionToken);
65 
pilferPointers(IBinder token)66     void pilferPointers(IBinder token);
67 
setInputFilterEnabled(boolean enable)68     void setInputFilterEnabled(boolean enable);
69 
70     /**
71      * Set the touch mode state for the display passed as argument.
72      *
73      * @param inTouchMode   true if the device is in touch mode
74      * @param pid           the pid of the process that requested to switch touch mode state
75      * @param uid           the uid of the process that requested to switch touch mode state
76      * @param hasPermission if set to {@code true} then no further authorization will be performed
77      * @param displayId     the target display (ignored if device is configured with per display
78      *                      touch mode enabled)
79      * @return {@code true} if the touch mode was successfully changed, {@code false} otherwise
80      */
setInTouchMode(boolean inTouchMode, int pid, int uid, boolean hasPermission, int displayId)81     boolean setInTouchMode(boolean inTouchMode, int pid, int uid, boolean hasPermission,
82             int displayId);
83 
setMaximumObscuringOpacityForTouch(float opacity)84     void setMaximumObscuringOpacityForTouch(float opacity);
85 
86     /**
87      * Inject an input event into the system.
88      *
89      * @param event         the input event to inject
90      * @param injectIntoUid true if the event should target windows owned by uid, false otherwise
91      * @param uid           the uid whose windows should be targeted, if any
92      * @param syncMode      {@link android.os.InputEventInjectionSync}
93      * @param timeoutMillis timeout to wait for input injection to complete, in milliseconds
94      * @param policyFlags   defined in {@link android.view.WindowManagerPolicyConstants}
95      * @return {@link android.os.InputEventInjectionResult}
96      */
injectInputEvent(InputEvent event, boolean injectIntoUid, int uid, int syncMode, int timeoutMillis, int policyFlags)97     int injectInputEvent(InputEvent event, boolean injectIntoUid, int uid, int syncMode,
98             int timeoutMillis, int policyFlags);
99 
verifyInputEvent(InputEvent event)100     VerifiedInputEvent verifyInputEvent(InputEvent event);
101 
toggleCapsLock(int deviceId)102     void toggleCapsLock(int deviceId);
103 
resetLockedModifierState()104     void resetLockedModifierState();
105 
displayRemoved(int displayId)106     void displayRemoved(int displayId);
107 
setInputDispatchMode(boolean enabled, boolean frozen)108     void setInputDispatchMode(boolean enabled, boolean frozen);
109 
setSystemUiLightsOut(boolean lightsOut)110     void setSystemUiLightsOut(boolean lightsOut);
111 
setFocusedApplication(int displayId, InputApplicationHandle application)112     void setFocusedApplication(int displayId, InputApplicationHandle application);
113 
setFocusedDisplay(int displayId)114     void setFocusedDisplay(int displayId);
115 
setMinTimeBetweenUserActivityPokes(long millis)116     void setMinTimeBetweenUserActivityPokes(long millis);
117 
transferTouchGesture(IBinder fromChannelToken, IBinder toChannelToken, boolean isDragDrop, boolean transferEntireGesture)118     boolean transferTouchGesture(IBinder fromChannelToken, IBinder toChannelToken,
119             boolean isDragDrop, boolean transferEntireGesture);
120 
121     /**
122      * Transfer the current touch gesture to the window identified by 'destChannelToken' positioned
123      * on display with id 'displayId'.
124      * @deprecated Use {@link #transferTouchGesture(IBinder, IBinder, boolean)}
125      */
126     @Deprecated
transferTouch(IBinder destChannelToken, int displayId)127     boolean transferTouch(IBinder destChannelToken, int displayId);
128 
getMousePointerSpeed()129     int getMousePointerSpeed();
130 
setPointerSpeed(int speed)131     void setPointerSpeed(int speed);
132 
setMouseScalingEnabled(int displayId, boolean enabled)133     void setMouseScalingEnabled(int displayId, boolean enabled);
134 
setMouseReverseVerticalScrollingEnabled(boolean enabled)135     void setMouseReverseVerticalScrollingEnabled(boolean enabled);
136 
setMouseScrollingAccelerationEnabled(boolean enabled)137     void setMouseScrollingAccelerationEnabled(boolean enabled);
138 
setMouseScrollingSpeed(int speed)139     void setMouseScrollingSpeed(int speed);
140 
setMouseSwapPrimaryButtonEnabled(boolean enabled)141     void setMouseSwapPrimaryButtonEnabled(boolean enabled);
142 
setMouseAccelerationEnabled(boolean enabled)143     void setMouseAccelerationEnabled(boolean enabled);
144 
setTouchpadPointerSpeed(int speed)145     void setTouchpadPointerSpeed(int speed);
146 
setTouchpadNaturalScrollingEnabled(boolean enabled)147     void setTouchpadNaturalScrollingEnabled(boolean enabled);
148 
setTouchpadTapToClickEnabled(boolean enabled)149     void setTouchpadTapToClickEnabled(boolean enabled);
150 
setTouchpadTapDraggingEnabled(boolean enabled)151     void setTouchpadTapDraggingEnabled(boolean enabled);
152 
setShouldNotifyTouchpadHardwareState(boolean enabled)153     void setShouldNotifyTouchpadHardwareState(boolean enabled);
154 
setTouchpadRightClickZoneEnabled(boolean enabled)155     void setTouchpadRightClickZoneEnabled(boolean enabled);
156 
setTouchpadThreeFingerTapShortcutEnabled(boolean enabled)157     void setTouchpadThreeFingerTapShortcutEnabled(boolean enabled);
158 
setTouchpadSystemGesturesEnabled(boolean enabled)159     void setTouchpadSystemGesturesEnabled(boolean enabled);
160 
setTouchpadAccelerationEnabled(boolean enabled)161     void setTouchpadAccelerationEnabled(boolean enabled);
162 
setShowTouches(boolean enabled)163     void setShowTouches(boolean enabled);
164 
setNonInteractiveDisplays(int[] displayIds)165     void setNonInteractiveDisplays(int[] displayIds);
166 
reloadCalibration()167     void reloadCalibration();
168 
vibrate(int deviceId, long[] pattern, int[] amplitudes, int repeat, int token)169     void vibrate(int deviceId, long[] pattern, int[] amplitudes, int repeat, int token);
170 
vibrateCombined(int deviceId, long[] pattern, SparseArray<int[]> amplitudes, int repeat, int token)171     void vibrateCombined(int deviceId, long[] pattern, SparseArray<int[]> amplitudes,
172             int repeat, int token);
173 
cancelVibrate(int deviceId, int token)174     void cancelVibrate(int deviceId, int token);
175 
isVibrating(int deviceId)176     boolean isVibrating(int deviceId);
177 
getVibratorIds(int deviceId)178     int[] getVibratorIds(int deviceId);
179 
getBatteryCapacity(int deviceId)180     int getBatteryCapacity(int deviceId);
181 
getBatteryStatus(int deviceId)182     int getBatteryStatus(int deviceId);
183 
184     /**
185      * Get the device path of the battery for an input device.
186      * @return the path for the input device battery, or null if there is none.
187      */
188     @Nullable
getBatteryDevicePath(int deviceId)189     String getBatteryDevicePath(int deviceId);
190 
getLights(int deviceId)191     List<Light> getLights(int deviceId);
192 
getLightPlayerId(int deviceId, int lightId)193     int getLightPlayerId(int deviceId, int lightId);
194 
getLightColor(int deviceId, int lightId)195     int getLightColor(int deviceId, int lightId);
196 
setLightPlayerId(int deviceId, int lightId, int playerId)197     void setLightPlayerId(int deviceId, int lightId, int playerId);
198 
setLightColor(int deviceId, int lightId, int color)199     void setLightColor(int deviceId, int lightId, int color);
200 
reloadKeyboardLayouts()201     void reloadKeyboardLayouts();
202 
reloadDeviceAliases()203     void reloadDeviceAliases();
204 
dump()205     String dump();
206 
monitor()207     void monitor();
208 
enableInputDevice(int deviceId)209     void enableInputDevice(int deviceId);
210 
disableInputDevice(int deviceId)211     void disableInputDevice(int deviceId);
212 
reloadPointerIcons()213     void reloadPointerIcons();
214 
setPointerIcon(@onNull PointerIcon icon, int displayId, int deviceId, int pointerId, @NonNull IBinder inputToken)215     boolean setPointerIcon(@NonNull PointerIcon icon, int displayId, int deviceId, int pointerId,
216             @NonNull IBinder inputToken);
217 
setPointerIconVisibility(int displayId, boolean visible)218     void setPointerIconVisibility(int displayId, boolean visible);
219 
requestPointerCapture(IBinder windowToken, boolean enabled)220     void requestPointerCapture(IBinder windowToken, boolean enabled);
221 
canDispatchToDisplay(int deviceId, int displayId)222     boolean canDispatchToDisplay(int deviceId, int displayId);
223 
notifyPortAssociationsChanged()224     void notifyPortAssociationsChanged();
225 
changeUniqueIdAssociation()226     void changeUniqueIdAssociation();
227 
changeTypeAssociation()228     void changeTypeAssociation();
229 
changeKeyboardLayoutAssociation()230     void changeKeyboardLayoutAssociation();
231 
setDisplayEligibilityForPointerCapture(int displayId, boolean enabled)232     void setDisplayEligibilityForPointerCapture(int displayId, boolean enabled);
233 
setMotionClassifierEnabled(boolean enabled)234     void setMotionClassifierEnabled(boolean enabled);
235 
setKeyRepeatConfiguration(int timeoutMs, int delayMs, boolean keyRepeatEnabled)236     void setKeyRepeatConfiguration(int timeoutMs, int delayMs, boolean keyRepeatEnabled);
237 
getSensorList(int deviceId)238     InputSensorInfo[] getSensorList(int deviceId);
239 
240     @Nullable
getTouchpadHardwareProperties(int deviceId)241     TouchpadHardwareProperties getTouchpadHardwareProperties(int deviceId);
242 
flushSensor(int deviceId, int sensorType)243     boolean flushSensor(int deviceId, int sensorType);
244 
enableSensor(int deviceId, int sensorType, int samplingPeriodUs, int maxBatchReportLatencyUs)245     boolean enableSensor(int deviceId, int sensorType, int samplingPeriodUs,
246             int maxBatchReportLatencyUs);
247 
disableSensor(int deviceId, int sensorType)248     void disableSensor(int deviceId, int sensorType);
249 
cancelCurrentTouch()250     void cancelCurrentTouch();
251 
252     /** Set the displayId on which the mouse cursor should be shown. */
setPointerDisplayId(int displayId)253     void setPointerDisplayId(int displayId);
254 
255     /** Get the bluetooth address of an input device if known, otherwise return null. */
getBluetoothAddress(int deviceId)256     String getBluetoothAddress(int deviceId);
257 
258     /** Set whether stylus button reporting through motion events should be enabled. */
setStylusButtonMotionEventsEnabled(boolean enabled)259     void setStylusButtonMotionEventsEnabled(boolean enabled);
260 
261     /**
262      * Get the current position of the mouse cursor on the given display.
263      *
264      * If the mouse cursor is not currently shown, the coordinate values will be NaN-s. Use
265      * {@link android.view.Display#INVALID_DISPLAY} to get the position of the default mouse cursor.
266      *
267      * NOTE: This will grab the PointerController's lock, so we must be careful about calling this
268      * from the InputReader or Display threads, which may result in a deadlock.
269      */
getMouseCursorPosition(int displayId)270     float[] getMouseCursorPosition(int displayId);
271 
272     /** Set whether showing a pointer icon for styluses is enabled. */
setStylusPointerIconEnabled(boolean enabled)273     void setStylusPointerIconEnabled(boolean enabled);
274 
275     /** Get the sysfs root path of an input device if known, otherwise return null. */
getSysfsRootPath(int deviceId)276     @Nullable String getSysfsRootPath(int deviceId);
277 
278     /**
279      * Report sysfs node changes. This may result in recreation of the corresponding InputDevice.
280      * The recreated device may contain new associated peripheral devices like Light, Battery, etc.
281      */
sysfsNodeChanged(String sysfsNodePath)282     void sysfsNodeChanged(String sysfsNodePath);
283 
284     /**
285      * Notify if Accessibility bounce keys threshold is changed from InputSettings.
286      */
setAccessibilityBounceKeysThreshold(int thresholdTimeMs)287     void setAccessibilityBounceKeysThreshold(int thresholdTimeMs);
288 
289     /**
290      * Notify if Accessibility slow keys threshold is changed from InputSettings.
291      */
setAccessibilitySlowKeysThreshold(int thresholdTimeMs)292     void setAccessibilitySlowKeysThreshold(int thresholdTimeMs);
293 
294     /**
295      * Notify if Accessibility sticky keys is enabled/disabled from InputSettings.
296      */
setAccessibilityStickyKeysEnabled(boolean enabled)297     void setAccessibilityStickyKeysEnabled(boolean enabled);
298 
setInputMethodConnectionIsActive(boolean isActive)299     void setInputMethodConnectionIsActive(boolean isActive);
300 
301     /**
302      * Get the device ID of the InputDevice that used most recently.
303      *
304      * @return the last used input device ID, or
305      *     {@link android.os.IInputConstants#INVALID_INPUT_DEVICE_ID} if no device has been used
306      *     since boot.
307      */
getLastUsedInputDeviceId()308     int getLastUsedInputDeviceId();
309 
310     /**
311      * Set whether the given input device can wake up the kernel from sleep
312      * when it generates input events. By default, usually only internal (built-in)
313      * input devices can wake the kernel from sleep. For an external input device
314      * that supports remote wakeup to be able to wake the kernel, this must be called
315      * after each time the device is connected/added.
316      *
317      * Returns true if setting power wakeup was successful.
318      */
setKernelWakeEnabled(int deviceId, boolean enabled)319     boolean setKernelWakeEnabled(int deviceId, boolean enabled);
320 
321     /**
322      * Set whether the accessibility pointer motion filter is enabled.
323      * <p>
324      * Once enabled, {@link InputManagerService#filterPointerMotion} is called for evety motion
325      * event from pointer devices.
326      *
327      * @param enabled {@code true} if the filter is enabled, {@code false} otherwise.
328      */
setAccessibilityPointerMotionFilterEnabled(boolean enabled)329     void setAccessibilityPointerMotionFilterEnabled(boolean enabled);
330 
331     /** The native implementation of InputManagerService methods. */
332     class NativeImpl implements NativeInputManagerService {
333         /** Pointer to native input manager service object, used by native code. */
334         @SuppressWarnings({"unused", "FieldCanBeLocal"})
335         private final long mPtr;
336 
NativeImpl(InputManagerService service, MessageQueue messageQueue)337         NativeImpl(InputManagerService service, MessageQueue messageQueue) {
338             mPtr = init(service, messageQueue);
339         }
340 
init(InputManagerService service, MessageQueue messageQueue)341         private native long init(InputManagerService service, MessageQueue messageQueue);
342 
343         @Override
start()344         public native void start();
345 
346         @Override
setDisplayViewports(DisplayViewport[] viewports)347         public native void setDisplayViewports(DisplayViewport[] viewports);
348 
349         @Override
setDisplayTopology(DisplayTopologyGraph topologyGraph)350         public native void setDisplayTopology(DisplayTopologyGraph topologyGraph);
351 
352         @Override
getScanCodeState(int deviceId, int sourceMask, int scanCode)353         public native int getScanCodeState(int deviceId, int sourceMask, int scanCode);
354 
355         @Override
getKeyCodeState(int deviceId, int sourceMask, int keyCode)356         public native int getKeyCodeState(int deviceId, int sourceMask, int keyCode);
357 
358         @Override
getSwitchState(int deviceId, int sourceMask, int sw)359         public native int getSwitchState(int deviceId, int sourceMask, int sw);
360 
361         @Override
setKeyRemapping(int[] fromKeyCodes, int[] toKeyCodes)362         public native void setKeyRemapping(int[] fromKeyCodes, int[] toKeyCodes);
363 
364         @Override
hasKeys(int deviceId, int sourceMask, int[] keyCodes, boolean[] keyExists)365         public native boolean hasKeys(int deviceId, int sourceMask, int[] keyCodes,
366                 boolean[] keyExists);
367 
368         @Override
getKeyCodeForKeyLocation(int deviceId, int locationKeyCode)369         public native int getKeyCodeForKeyLocation(int deviceId, int locationKeyCode);
370 
371         @Override
createInputChannel(String name)372         public native InputChannel createInputChannel(String name);
373 
374         @Override
createInputMonitor(int displayId, String name, int pid)375         public native InputChannel createInputMonitor(int displayId, String name, int pid);
376 
377         @Override
removeInputChannel(IBinder connectionToken)378         public native void removeInputChannel(IBinder connectionToken);
379 
380         @Override
pilferPointers(IBinder token)381         public native void pilferPointers(IBinder token);
382 
383         @Override
setInputFilterEnabled(boolean enable)384         public native void setInputFilterEnabled(boolean enable);
385 
386         @Override
setInTouchMode(boolean inTouchMode, int pid, int uid, boolean hasPermission, int displayId)387         public native boolean setInTouchMode(boolean inTouchMode, int pid, int uid,
388                 boolean hasPermission, int displayId);
389 
390         @Override
setMaximumObscuringOpacityForTouch(float opacity)391         public native void setMaximumObscuringOpacityForTouch(float opacity);
392 
393         @Override
injectInputEvent(InputEvent event, boolean injectIntoUid, int uid, int syncMode, int timeoutMillis, int policyFlags)394         public native int injectInputEvent(InputEvent event, boolean injectIntoUid, int uid,
395                 int syncMode, int timeoutMillis, int policyFlags);
396 
397         @Override
verifyInputEvent(InputEvent event)398         public native VerifiedInputEvent verifyInputEvent(InputEvent event);
399 
400         @Override
toggleCapsLock(int deviceId)401         public native void toggleCapsLock(int deviceId);
402 
403         @Override
resetLockedModifierState()404         public native void resetLockedModifierState();
405 
406         @Override
displayRemoved(int displayId)407         public native void displayRemoved(int displayId);
408 
409         @Override
setInputDispatchMode(boolean enabled, boolean frozen)410         public native void setInputDispatchMode(boolean enabled, boolean frozen);
411 
412         @Override
setSystemUiLightsOut(boolean lightsOut)413         public native void setSystemUiLightsOut(boolean lightsOut);
414 
415         @Override
setFocusedApplication(int displayId, InputApplicationHandle application)416         public native void setFocusedApplication(int displayId, InputApplicationHandle application);
417 
418         @Override
setFocusedDisplay(int displayId)419         public native void setFocusedDisplay(int displayId);
420 
421         @Override
setMinTimeBetweenUserActivityPokes(long millis)422         public native void setMinTimeBetweenUserActivityPokes(long millis);
423 
424         @Override
transferTouchGesture(IBinder fromChannelToken, IBinder toChannelToken, boolean isDragDrop, boolean transferEntireGesture)425         public native boolean transferTouchGesture(IBinder fromChannelToken, IBinder toChannelToken,
426                 boolean isDragDrop, boolean transferEntireGesture);
427 
428         @Override
429         @Deprecated
transferTouch(IBinder destChannelToken, int displayId)430         public native boolean transferTouch(IBinder destChannelToken, int displayId);
431 
432         @Override
getMousePointerSpeed()433         public native int getMousePointerSpeed();
434 
435         @Override
setPointerSpeed(int speed)436         public native void setPointerSpeed(int speed);
437 
438         @Override
setMouseScalingEnabled(int displayId, boolean enabled)439         public native void setMouseScalingEnabled(int displayId, boolean enabled);
440 
441         @Override
setMouseReverseVerticalScrollingEnabled(boolean enabled)442         public native void setMouseReverseVerticalScrollingEnabled(boolean enabled);
443 
444         @Override
setMouseScrollingAccelerationEnabled(boolean enabled)445         public native void setMouseScrollingAccelerationEnabled(boolean enabled);
446 
447         @Override
setMouseScrollingSpeed(int speed)448         public native void setMouseScrollingSpeed(int speed);
449 
450         @Override
setMouseSwapPrimaryButtonEnabled(boolean enabled)451         public native void setMouseSwapPrimaryButtonEnabled(boolean enabled);
452 
453         @Override
setMouseAccelerationEnabled(boolean enabled)454         public native void setMouseAccelerationEnabled(boolean enabled);
455 
456         @Override
setTouchpadPointerSpeed(int speed)457         public native void setTouchpadPointerSpeed(int speed);
458 
459         @Override
setTouchpadNaturalScrollingEnabled(boolean enabled)460         public native void setTouchpadNaturalScrollingEnabled(boolean enabled);
461 
462         @Override
setTouchpadTapToClickEnabled(boolean enabled)463         public native void setTouchpadTapToClickEnabled(boolean enabled);
464 
465         @Override
setTouchpadTapDraggingEnabled(boolean enabled)466         public native void setTouchpadTapDraggingEnabled(boolean enabled);
467 
468         @Override
setShouldNotifyTouchpadHardwareState(boolean enabled)469         public native void setShouldNotifyTouchpadHardwareState(boolean enabled);
470 
471         @Override
setTouchpadRightClickZoneEnabled(boolean enabled)472         public native void setTouchpadRightClickZoneEnabled(boolean enabled);
473 
474         @Override
setTouchpadThreeFingerTapShortcutEnabled(boolean enabled)475         public native void setTouchpadThreeFingerTapShortcutEnabled(boolean enabled);
476 
477         @Override
setTouchpadSystemGesturesEnabled(boolean enabled)478         public native void setTouchpadSystemGesturesEnabled(boolean enabled);
479 
480         @Override
setTouchpadAccelerationEnabled(boolean enabled)481         public native void setTouchpadAccelerationEnabled(boolean enabled);
482 
483         @Override
setShowTouches(boolean enabled)484         public native void setShowTouches(boolean enabled);
485 
486         @Override
setNonInteractiveDisplays(int[] displayIds)487         public native void setNonInteractiveDisplays(int[] displayIds);
488 
489         @Override
reloadCalibration()490         public native void reloadCalibration();
491 
492         @Override
vibrate(int deviceId, long[] pattern, int[] amplitudes, int repeat, int token)493         public native void vibrate(int deviceId, long[] pattern, int[] amplitudes, int repeat,
494                 int token);
495 
496         @Override
vibrateCombined(int deviceId, long[] pattern, SparseArray<int[]> amplitudes, int repeat, int token)497         public native void vibrateCombined(int deviceId, long[] pattern,
498                 SparseArray<int[]> amplitudes,
499                 int repeat, int token);
500 
501         @Override
cancelVibrate(int deviceId, int token)502         public native void cancelVibrate(int deviceId, int token);
503 
504         @Override
isVibrating(int deviceId)505         public native boolean isVibrating(int deviceId);
506 
507         @Override
getVibratorIds(int deviceId)508         public native int[] getVibratorIds(int deviceId);
509 
510         @Override
getBatteryCapacity(int deviceId)511         public native int getBatteryCapacity(int deviceId);
512 
513         @Override
getBatteryStatus(int deviceId)514         public native int getBatteryStatus(int deviceId);
515 
516         @Override
getBatteryDevicePath(int deviceId)517         public native String getBatteryDevicePath(int deviceId);
518 
519         @Override
getLights(int deviceId)520         public native List<Light> getLights(int deviceId);
521 
522         @Override
getLightPlayerId(int deviceId, int lightId)523         public native int getLightPlayerId(int deviceId, int lightId);
524 
525         @Override
getLightColor(int deviceId, int lightId)526         public native int getLightColor(int deviceId, int lightId);
527 
528         @Override
setLightPlayerId(int deviceId, int lightId, int playerId)529         public native void setLightPlayerId(int deviceId, int lightId, int playerId);
530 
531         @Override
setLightColor(int deviceId, int lightId, int color)532         public native void setLightColor(int deviceId, int lightId, int color);
533 
534         @Override
reloadKeyboardLayouts()535         public native void reloadKeyboardLayouts();
536 
537         @Override
reloadDeviceAliases()538         public native void reloadDeviceAliases();
539 
540         @Override
dump()541         public native String dump();
542 
543         @Override
monitor()544         public native void monitor();
545 
546         @Override
enableInputDevice(int deviceId)547         public native void enableInputDevice(int deviceId);
548 
549         @Override
disableInputDevice(int deviceId)550         public native void disableInputDevice(int deviceId);
551 
552         @Override
reloadPointerIcons()553         public native void reloadPointerIcons();
554 
555         @Override
setPointerIcon(PointerIcon icon, int displayId, int deviceId, int pointerId, IBinder inputToken)556         public native boolean setPointerIcon(PointerIcon icon, int displayId, int deviceId,
557                 int pointerId, IBinder inputToken);
558 
559         @Override
setPointerIconVisibility(int displayId, boolean visible)560         public native void setPointerIconVisibility(int displayId, boolean visible);
561 
562         @Override
requestPointerCapture(IBinder windowToken, boolean enabled)563         public native void requestPointerCapture(IBinder windowToken, boolean enabled);
564 
565         @Override
canDispatchToDisplay(int deviceId, int displayId)566         public native boolean canDispatchToDisplay(int deviceId, int displayId);
567 
568         @Override
notifyPortAssociationsChanged()569         public native void notifyPortAssociationsChanged();
570 
571         @Override
changeUniqueIdAssociation()572         public native void changeUniqueIdAssociation();
573 
574         @Override
changeTypeAssociation()575         public native void changeTypeAssociation();
576 
577         @Override
changeKeyboardLayoutAssociation()578         public native void changeKeyboardLayoutAssociation();
579 
580         @Override
setDisplayEligibilityForPointerCapture(int displayId, boolean enabled)581         public native void setDisplayEligibilityForPointerCapture(int displayId, boolean enabled);
582 
583         @Override
setMotionClassifierEnabled(boolean enabled)584         public native void setMotionClassifierEnabled(boolean enabled);
585 
586         @Override
setKeyRepeatConfiguration(int timeoutMs, int delayMs, boolean keyRepeatEnabled)587         public native void setKeyRepeatConfiguration(int timeoutMs, int delayMs,
588                 boolean keyRepeatEnabled);
589 
590         @Override
getSensorList(int deviceId)591         public native InputSensorInfo[] getSensorList(int deviceId);
592 
593         @Override
getTouchpadHardwareProperties(int deviceId)594         public native TouchpadHardwareProperties getTouchpadHardwareProperties(int deviceId);
595 
596         @Override
flushSensor(int deviceId, int sensorType)597         public native boolean flushSensor(int deviceId, int sensorType);
598 
599         @Override
enableSensor(int deviceId, int sensorType, int samplingPeriodUs, int maxBatchReportLatencyUs)600         public native boolean enableSensor(int deviceId, int sensorType, int samplingPeriodUs,
601                 int maxBatchReportLatencyUs);
602 
603         @Override
disableSensor(int deviceId, int sensorType)604         public native void disableSensor(int deviceId, int sensorType);
605 
606         @Override
cancelCurrentTouch()607         public native void cancelCurrentTouch();
608 
609         @Override
setPointerDisplayId(int displayId)610         public native void setPointerDisplayId(int displayId);
611 
612         @Override
getBluetoothAddress(int deviceId)613         public native String getBluetoothAddress(int deviceId);
614 
615         @Override
setStylusButtonMotionEventsEnabled(boolean enabled)616         public native void setStylusButtonMotionEventsEnabled(boolean enabled);
617 
618         @Override
getMouseCursorPosition(int displayId)619         public native float[] getMouseCursorPosition(int displayId);
620 
621         @Override
setStylusPointerIconEnabled(boolean enabled)622         public native void setStylusPointerIconEnabled(boolean enabled);
623 
624         @Override
getSysfsRootPath(int deviceId)625         public native String getSysfsRootPath(int deviceId);
626 
627         @Override
sysfsNodeChanged(String sysfsNodePath)628         public native void sysfsNodeChanged(String sysfsNodePath);
629 
630         @Override
setAccessibilityBounceKeysThreshold(int thresholdTimeMs)631         public native void setAccessibilityBounceKeysThreshold(int thresholdTimeMs);
632 
633         @Override
setAccessibilitySlowKeysThreshold(int thresholdTimeMs)634         public native void setAccessibilitySlowKeysThreshold(int thresholdTimeMs);
635 
636         @Override
setAccessibilityStickyKeysEnabled(boolean enabled)637         public native void setAccessibilityStickyKeysEnabled(boolean enabled);
638 
639         @Override
setInputMethodConnectionIsActive(boolean isActive)640         public native void setInputMethodConnectionIsActive(boolean isActive);
641 
642         @Override
getLastUsedInputDeviceId()643         public native int getLastUsedInputDeviceId();
644 
645         @Override
setKernelWakeEnabled(int deviceId, boolean enabled)646         public native boolean setKernelWakeEnabled(int deviceId, boolean enabled);
647 
648         @Override
setAccessibilityPointerMotionFilterEnabled(boolean enabled)649         public native void setAccessibilityPointerMotionFilterEnabled(boolean enabled);
650     }
651 }
652