14532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown/*
24532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * Copyright (C) 2012 The Android Open Source Project
34532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown *
44532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
54532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * you may not use this file except in compliance with the License.
64532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * You may obtain a copy of the License at
74532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown *
84532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
94532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown *
104532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * Unless required by applicable law or agreed to in writing, software
114532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
124532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * See the License for the specific language governing permissions and
144532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown * limitations under the License.
154532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown */
164532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown
174532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brownpackage android.hardware.input;
184532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown
19fb290df3c9a6f37ec050163029e25844de2f8590RoboErikimport android.hardware.input.InputDeviceIdentifier;
209f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brownimport android.hardware.input.KeyboardLayout;
21af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78bJeff Brownimport android.hardware.input.IInputDevicesChangedListener;
2239e5e947447bc611205404ae6a4690656f1aa0f9Michael Wrightimport android.hardware.input.ITabletModeChangedListener;
23d6396d67201fb2b64d13070324bb115c9c23b08aJason Gereckeimport android.hardware.input.TouchCalibration;
24a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brownimport android.os.IBinder;
25ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brownimport android.view.InputDevice;
26ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brownimport android.view.InputEvent;
27d4eaef7f4c5a5d281de4fff272cd33e892e26264Jun Mukaiimport android.view.PointerIcon;
28d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wrightimport android.view.inputmethod.InputMethodInfo;
29d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wrightimport android.view.inputmethod.InputMethodSubtype;
30ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown
314532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown/** @hide */
324532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Browninterface IInputManager {
33ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    // Gets input device information.
34ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    InputDevice getInputDevice(int deviceId);
35ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    int[] getInputDeviceIds();
36ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown
37ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    // Reports whether the hardware supports the given keys; returns true if successful
38ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    boolean hasKeys(int deviceId, int sourceMask, in int[] keyCodes, out boolean[] keyExists);
39ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown
40ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    // Temporarily changes the pointer speed.
41ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    void tryPointerSpeed(int speed);
42ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown
43ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    // Injects an input event into the system.  To inject into windows owned by other
44ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    // applications, the caller must have the INJECT_EVENTS permission.
45ac14351e16e1258f1cb54e2bf772b8be004eb2b8Jeff Brown    boolean injectInputEvent(in InputEvent ev, int mode);
469f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown
47d6396d67201fb2b64d13070324bb115c9c23b08aJason Gerecke    // Calibrate input device position
48d52207423225bcd99e94276e9d0fc2cb5f905602Jason Gerecke    TouchCalibration getTouchCalibrationForInputDevice(String inputDeviceDescriptor, int rotation);
49d52207423225bcd99e94276e9d0fc2cb5f905602Jason Gerecke    void setTouchCalibrationForInputDevice(String inputDeviceDescriptor, int rotation,
50d6396d67201fb2b64d13070324bb115c9c23b08aJason Gerecke            in TouchCalibration calibration);
51d6396d67201fb2b64d13070324bb115c9c23b08aJason Gerecke
529f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown    // Keyboard layouts configuration.
539f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown    KeyboardLayout[] getKeyboardLayouts();
540748342d2ed264c01384fbaa4446a702a8824813Michael Wright    KeyboardLayout[] getKeyboardLayoutsForInputDevice(in InputDeviceIdentifier identifier);
559f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown    KeyboardLayout getKeyboardLayout(String keyboardLayoutDescriptor);
56fb290df3c9a6f37ec050163029e25844de2f8590RoboErik    String getCurrentKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier);
57fb290df3c9a6f37ec050163029e25844de2f8590RoboErik    void setCurrentKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
58cf39bdf3dff5e29447f6ce734b76dc3490385e58Jeff Brown            String keyboardLayoutDescriptor);
590748342d2ed264c01384fbaa4446a702a8824813Michael Wright    String[] getEnabledKeyboardLayoutsForInputDevice(in InputDeviceIdentifier identifier);
60fb290df3c9a6f37ec050163029e25844de2f8590RoboErik    void addKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
61cf39bdf3dff5e29447f6ce734b76dc3490385e58Jeff Brown            String keyboardLayoutDescriptor);
62fb290df3c9a6f37ec050163029e25844de2f8590RoboErik    void removeKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
639f25b7fdf216c9ef0bd2322cd223eeaf0d60f77fJeff Brown            String keyboardLayoutDescriptor);
64d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wright    KeyboardLayout getKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
65d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wright            in InputMethodInfo imeInfo, in InputMethodSubtype imeSubtype);
66d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wright    void setKeyboardLayoutForInputDevice(in InputDeviceIdentifier identifier,
67d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wright            in InputMethodInfo imeInfo, in InputMethodSubtype imeSubtype,
68d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907Michael Wright            String keyboardLayoutDescriptor);
69af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78bJeff Brown
70af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78bJeff Brown    // Registers an input devices changed listener.
71af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78bJeff Brown    void registerInputDevicesChangedListener(IInputDevicesChangedListener listener);
72a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown
739209c9cd9a6f779d0d9d86f9b2e368df564fa6bbMichael Wright    // Queries whether the device is currently in tablet mode
749209c9cd9a6f779d0d9d86f9b2e368df564fa6bbMichael Wright    int isInTabletMode();
7539e5e947447bc611205404ae6a4690656f1aa0f9Michael Wright    // Registers a tablet mode change listener
7639e5e947447bc611205404ae6a4690656f1aa0f9Michael Wright    void registerTabletModeChangedListener(ITabletModeChangedListener listener);
7739e5e947447bc611205404ae6a4690656f1aa0f9Michael Wright
78a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    // Input device vibrator control.
79a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    void vibrate(int deviceId, in long[] pattern, int repeat, IBinder token);
80a47425a13c19f95057df78b8bb65bb25657e8753Jeff Brown    void cancelVibrate(int deviceId, IBinder token);
811db5397d88e722b1ab82ccb2b429ceec1179ccd8Jun Mukai
82e051f6f1fdb5e21cbed394d29dfcab5c642e4129Michael Wright    void setPointerIconType(int typeId);
83d4eaef7f4c5a5d281de4fff272cd33e892e26264Jun Mukai    void setCustomPointerIcon(in PointerIcon icon);
843787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev
853787de16d24001eeb452e1c711d4290a396e67c9Vladislav Kaznacheev    void requestPointerCapture(IBinder windowToken, boolean enabled);
864532e6158474a263d9d26c2b42240bcf7ce9b172Jeff Brown}
87