17f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown/*
24ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown * Copyright (C) 2014 The Android Open Source Project
37f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown *
47f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
57f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * you may not use this file except in compliance with the License.
67f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * You may obtain a copy of the License at
77f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown *
87f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
97f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown *
107f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * Unless required by applicable law or agreed to in writing, software
117f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
127f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * See the License for the specific language governing permissions and
147f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown * limitations under the License.
157f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown */
167f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown
174ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brownpackage android.hardware.input;
184ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown
19b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawaimport android.annotation.Nullable;
204ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brownimport android.hardware.display.DisplayViewport;
2138f96e5020b3e82b98fe97b0be363a5ad185860fJeff Brownimport android.view.InputEvent;
22b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawaimport android.view.inputmethod.InputMethodInfo;
23b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawaimport android.view.inputmethod.InputMethodSubtype;
247f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown
257f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown/**
264ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown * Input manager local system service interface.
274ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown *
284ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown * @hide Only for use within the system server.
297f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown */
304ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brownpublic abstract class InputManagerInternal {
31037c33eae74bee2774897d969d48947f9abe254fJeff Brown    public abstract boolean injectInputEvent(InputEvent event, int displayId, int mode);
32037c33eae74bee2774897d969d48947f9abe254fJeff Brown
334ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown    /**
34037c33eae74bee2774897d969d48947f9abe254fJeff Brown     * Called by the display manager to set information about the displays as needed
35037c33eae74bee2774897d969d48947f9abe254fJeff Brown     * by the input system.  The input system must copy this information to retain it.
364ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown     */
374ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown    public abstract void setDisplayViewports(DisplayViewport defaultViewport,
384ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown            DisplayViewport externalTouchViewport);
3938f96e5020b3e82b98fe97b0be363a5ad185860fJeff Brown
40037c33eae74bee2774897d969d48947f9abe254fJeff Brown    /**
41037c33eae74bee2774897d969d48947f9abe254fJeff Brown     * Called by the power manager to tell the input manager whether it should start
42037c33eae74bee2774897d969d48947f9abe254fJeff Brown     * watching for wake events.
43037c33eae74bee2774897d969d48947f9abe254fJeff Brown     */
44037c33eae74bee2774897d969d48947f9abe254fJeff Brown    public abstract void setInteractive(boolean interactive);
45b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa
46b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa    /**
47b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa     * Notifies that InputMethodManagerService switched the current input method subtype.
48b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa     *
49b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa     * @param userId user id that indicates who is using the specified input method and subtype.
50b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa     * @param inputMethodInfo {@code null} when no input method is selected.
51b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa     * @param subtype {@code null} when {@code inputMethodInfo} does has no subtype.
52b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa     */
53b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa    public abstract void onInputMethodSubtypeChanged(int userId,
54b097b8262ba22040d46d6e212a31b758b7023307Yohei Yukawa            @Nullable InputMethodInfo inputMethodInfo, @Nullable InputMethodSubtype subtype);
55112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian
56112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian    /**
57112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian     * Toggles Caps Lock state for input device with specific id.
58112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian     *
59112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian     * @param deviceId The id of input device.
60112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian     */
61112d05678b7de53da8948f62dd2e968274f62244Andrii Kulian    public abstract void toggleCapsLock(int deviceId);
629918234dcf9e115560144d0218682dd5050843bcAdrian Roos
639918234dcf9e115560144d0218682dd5050843bcAdrian Roos    /**
649918234dcf9e115560144d0218682dd5050843bcAdrian Roos     * Set whether the input stack should deliver pulse gesture events when the device is asleep.
659918234dcf9e115560144d0218682dd5050843bcAdrian Roos     */
669918234dcf9e115560144d0218682dd5050843bcAdrian Roos    public abstract void setPulseGestureEnabled(boolean enabled);
677f3994ec2a5dce1a037f04714b1f25cab85affb6Jeff Brown}
68