InputDevice.java revision c5ed5910c9ef066cec6a13bbb404ec57b1e92637
1c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown/*
2c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Copyright (C) 2010 The Android Open Source Project
3c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown *
4c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * you may not use this file except in compliance with the License.
6c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * You may obtain a copy of the License at
7c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown *
8c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown *
10c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Unless required by applicable law or agreed to in writing, software
11c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * See the License for the specific language governing permissions and
14c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * limitations under the License.
15c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */
16c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
17c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownpackage android.view;
18c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
19c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown/**
20c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Describes the capabilities of a particular input device.
21c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <p>
22c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Each input device may support multiple classes of input.  For example, a multifunction
23c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * keyboard may compose the capabilities of a standard keyboard together with a track pad mouse
24c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * or other pointing device.
25c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * </p><p>
26c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Some input devices present multiple distinguishable sources of input.  For example, a
27c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * game pad may have two analog joysticks, a directional pad and a full complement of buttons.
28c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Applications can query the framework about the characteristics of each distinct source.
29c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * </p><p>
30c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * As a further wrinkle, different kinds of input sources uses different coordinate systems
31c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * to describe motion events.  Refer to the comments on the input source constants for
32c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the appropriate interpretation.
33c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */
34c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownpublic final class InputDevice {
35c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    private int mId;
36c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    private String mName;
37c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    private int mSources;
38c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
39c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
40c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A mask for input source classes.
41c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
42c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Each distinct input source constant has one or more input source class bits set to
43c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * specify the desired interpretation for its input events.
44c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
45c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_CLASS_MASK = 0x000000ff;
46c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
47c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
48c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source has buttons or keys.
49c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Examples: {@link #SOURCE_KEYBOARD}, {@link #SOURCE_GAMEPAD}, {@link #SOURCE_DPAD}.
50c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
51c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A {@link KeyEvent} should be interpreted as a button or key press.
52c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
53c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Use {@link #hasKeyCode} to query whether the device supports a particular button or key.
54c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
55c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_CLASS_BUTTON = 0x00000001;
56c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
57c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
58c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a pointing device associated with a display.
59c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Examples: {@link #SOURCE_TOUCHSCREEN}, {@link #SOURCE_MOUSE}.
60c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
61c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A {@link MotionEvent} should be interpreted as absolute coordinates in
62c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * display units according to the {@link View} hierarchy.  Pointer down/up indicated when
63c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * the finger touches the display or when the selection button is pressed/released.
64c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
65c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Use {@link #getMotionRange} to query the range of the pointing device.  Some devices permit
66c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * touches outside the display area so the effective range may be somewhat smaller or larger
67c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * than the actual display size.
68c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
69c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_CLASS_POINTER = 0x00000002;
70c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
71c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
72c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a trackball navigation device.
73c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Examples: {@link #SOURCE_TRACKBALL}.
74c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
75c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A {@link MotionEvent} should be interpreted as relative movements in device-specific
76c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * units used for navigation purposes.  Pointer down/up indicates when the selection button
77c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * is pressed/released.
78c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
79c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Use {@link #getMotionRange} to query the range of motion.
80c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
81c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_CLASS_TRACKBALL = 0x00000004;
82c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
83c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
84c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is an absolute positioning device not associated with a display
85c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * (unlike {@link #SOURCE_CLASS_POINTER}).
86c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
87c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A {@link MotionEvent} should be interpreted as absolute coordinates in
88c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * device-specific surface units.
89c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
90c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Use {@link #getMotionRange} to query the range of positions.
91c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
92c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_CLASS_POSITION = 0x00000008;
93c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
94c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
95c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a joystick.
96c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
97c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A {@link KeyEvent} should be interpreted as a joystick button press.
98c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
99c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * A {@link MotionEvent} should be interpreted in absolute coordinates as a joystick
100c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * position in normalized device-specific units nominally between -1.0 and 1.0.
101c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
102c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Use {@link #getMotionRange} to query the range and precision of motion.
103c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
104c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_CLASS_JOYSTICK = 0x00000010;
105c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
106c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
107c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is unknown.
108c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
109c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_UNKNOWN = 0x00000000;
110c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
111c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
112c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a keyboard.
113c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
114c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_BUTTON
115c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
116c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_KEYBOARD = 0x00000100 | SOURCE_CLASS_BUTTON;
117c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
118c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
119c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a DPad.
120c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
121c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_BUTTON
122c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
123c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_DPAD = 0x00000200 | SOURCE_CLASS_BUTTON;
124c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
125c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
126c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a gamepad.
127c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
128c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_BUTTON
129c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
130c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_GAMEPAD = 0x00000400 | SOURCE_CLASS_BUTTON;
131c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
132c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
133c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a touch screen pointing device.
134c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
135c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_POINTER
136c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
137c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_TOUCHSCREEN = 0x00001000 | SOURCE_CLASS_POINTER;
138c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
139c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
140c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a mouse pointing device.
141c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * This code is also used for other mouse-like pointing devices such as trackpads
142c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * and trackpoints.
143c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
144c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_POINTER
145c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
146c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_MOUSE = 0x00002000 | SOURCE_CLASS_POINTER;
147c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
148c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
149c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a trackball.
150c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
151c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_TRACKBALL
152c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
153c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_TRACKBALL = 0x00010000 | SOURCE_CLASS_TRACKBALL;
154c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
155c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
156c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a touch pad or digitizer tablet that is not
157c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * associated with a display (unlike {@link SOURCE_TOUCHSCREEN}).
158c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
159c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_POSITION
160c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
161c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_TOUCHPAD = 0x00100000 | SOURCE_CLASS_POSITION;
162c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
163c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
164c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a joystick mounted on the left or is a standalone joystick.
165c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
166c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_JOYSTICK
167c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_JOYSTICK_LEFT = 0x01000000 | SOURCE_CLASS_JOYSTICK;
169c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
170c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
171c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * The input source is a joystick mounted on the right.
172c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     *
173c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @see #SOURCE_CLASS_JOYSTICK
174c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
175c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int SOURCE_JOYSTICK_RIGHT = 0x02000000 | SOURCE_CLASS_JOYSTICK;
176c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
177c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /*
178c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_X = 0;
179c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_Y = 1;
180c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_PRESSURE = 2;
181c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_SIZE = 3;
182c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_TOUCH_MAJOR = 4;
183c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_TOUCH_MINOR = 5;
184c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_TOOL_MAJOR = 6;
185c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_TOOL_MINOR = 7;
186c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final int MOTION_RANGE_ORIENTATION = 8;
187c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
188c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static InputDevice getDevice(int id) {
189c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }
190c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    */
191c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
192c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
193c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Gets the name of this input device.
194c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @return The input device name.
195c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
196c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public String getName() {
197c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        return mName;
198c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }
199c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
200c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
201c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Gets the input sources supported by this input device as a combined bitfield.
202c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @return The supported input sources.
203c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
204c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public int getSources() {
205c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        return mSources;
206c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }
207c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
208c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /**
209c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * Gets the key character map associated with this input device.
210c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     * @return The key character map.
211c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown     */
212c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public KeyCharacterMap getKeyCharacterMap() {
213c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        return KeyCharacterMap.load(mId);
214c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }
215c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
216c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    /*
217c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
218c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public MotionRange getMotionRange(int range) {
219c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }
220c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
221c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public boolean hasKeyCode(int keyCode) {
222c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }
223c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
224c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    public static final class MotionRange {
225c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        public float min;
226c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        public float max;
227c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        public float range;
228c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        public float flat;
229c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        public float fuzz;
230c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    }*/
231c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
232