Loading core/java/android/hardware/input/IInputManager.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.hardware.input; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.KeyboardLayout; import android.hardware.input.IInputDevicesChangedListener; import android.hardware.input.TouchCalibration; import android.os.IBinder; import android.view.InputDevice; import android.view.InputEvent; Loading @@ -39,6 +40,11 @@ interface IInputManager { // applications, the caller must have the INJECT_EVENTS permission. boolean injectInputEvent(in InputEvent ev, int mode); // Calibrate input device position TouchCalibration getTouchCalibrationForInputDevice(String inputDeviceDescriptor); void setTouchCalibrationForInputDevice(String inputDeviceDescriptor, in TouchCalibration calibration); // Keyboard layouts configuration. KeyboardLayout[] getKeyboardLayouts(); KeyboardLayout getKeyboardLayout(String keyboardLayoutDescriptor); Loading core/java/android/hardware/input/InputManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -499,6 +499,44 @@ public final class InputManager { } } /** * Gets the TouchCalibration applied to the specified input device's coordinates. * * @param inputDeviceDescriptor The input device descriptor. * @return The TouchCalibration currently assigned for use with the given * input device. If none is set, an identity TouchCalibration is returned. * * @hide */ public TouchCalibration getTouchCalibration(String inputDeviceDescriptor) { try { return mIm.getTouchCalibrationForInputDevice(inputDeviceDescriptor); } catch (RemoteException ex) { Log.w(TAG, "Could not get calibration matrix for input device.", ex); return TouchCalibration.IDENTITY; } } /** * Sets the TouchCalibration to apply to the specified input device's coordinates. * <p> * This method may have the side-effect of causing the input device in question * to be reconfigured. Requires {@link android.Manifest.permissions.SET_INPUT_CALIBRATION}. * </p> * * @param inputDeviceDescriptor The input device descriptor. * @param calibration The calibration to be applied * * @hide */ public void setTouchCalibration(String inputDeviceDescriptor, TouchCalibration calibration) { try { mIm.setTouchCalibrationForInputDevice(inputDeviceDescriptor, calibration); } catch (RemoteException ex) { Log.w(TAG, "Could not set calibration matrix for input device.", ex); } } /** * Gets the mouse pointer speed. * <p> Loading core/java/android/hardware/input/TouchCalibration.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.input; parcelable TouchCalibration; core/java/android/hardware/input/TouchCalibration.java 0 → 100644 +126 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.input; import android.os.Parcel; import android.os.Parcelable; /** * Encapsulates calibration data for input devices. * * @hide */ public class TouchCalibration implements Parcelable { public static final TouchCalibration IDENTITY = new TouchCalibration(); public static final Parcelable.Creator<TouchCalibration> CREATOR = new Parcelable.Creator<TouchCalibration>() { public TouchCalibration createFromParcel(Parcel in) { return new TouchCalibration(in); } public TouchCalibration[] newArray(int size) { return new TouchCalibration[size]; } }; private final float mXScale, mXYMix, mXOffset; private final float mYXMix, mYScale, mYOffset; /** * Create a new TouchCalibration initialized to the identity transformation. */ public TouchCalibration() { this(1,0,0,0,1,0); } /** * Create a new TouchCalibration from affine transformation paramters. * @param xScale Influence of input x-axis value on output x-axis value. * @param xyMix Influence of input y-axis value on output x-axis value. * @param xOffset Constant offset to be applied to output x-axis value. * @param yXMix Influence of input x-axis value on output y-axis value. * @param yScale Influence of input y-axis value on output y-axis value. * @param yOffset Constant offset to be applied to output y-axis value. */ public TouchCalibration(float xScale, float xyMix, float xOffset, float yxMix, float yScale, float yOffset) { mXScale = xScale; mXYMix = xyMix; mXOffset = xOffset; mYXMix = yxMix; mYScale = yScale; mYOffset = yOffset; } public TouchCalibration(Parcel in) { mXScale = in.readFloat(); mXYMix = in.readFloat(); mXOffset = in.readFloat(); mYXMix = in.readFloat(); mYScale = in.readFloat(); mYOffset = in.readFloat(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeFloat(mXScale); dest.writeFloat(mXYMix); dest.writeFloat(mXOffset); dest.writeFloat(mYXMix); dest.writeFloat(mYScale); dest.writeFloat(mYOffset); } @Override public int describeContents() { return 0; } public float[] getAffineTransform() { return new float[] { mXScale, mXYMix, mXOffset, mYXMix, mYScale, mYOffset }; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj instanceof TouchCalibration) { TouchCalibration cal = (TouchCalibration)obj; return (cal.mXScale == mXScale) && (cal.mXYMix == mXYMix) && (cal.mXOffset == mXOffset) && (cal.mYXMix == mYXMix) && (cal.mYScale == mYScale) && (cal.mYOffset == mYOffset); } else { return false; } } @Override public int hashCode() { return Float.floatToIntBits(mXScale) ^ Float.floatToIntBits(mXYMix) ^ Float.floatToIntBits(mXOffset) ^ Float.floatToIntBits(mYXMix) ^ Float.floatToIntBits(mYScale) ^ Float.floatToIntBits(mYOffset); } } core/res/AndroidManifest.xml +8 −0 Original line number Diff line number Diff line Loading @@ -2069,6 +2069,14 @@ android:description="@string/permdesc_setPointerSpeed" android:protectionLevel="signature" /> <!-- Allows low-level access to setting input device calibration. <p>Not for use by normal applications. @hide --> <permission android:name="android.permission.SET_INPUT_CALIBRATION" android:label="@string/permlab_setInputCalibration" android:description="@string/permdesc_setInputCalibration" android:protectionLevel="signature" /> <!-- Allows low-level access to setting the keyboard layout. <p>Not for use by third-party applications. @hide --> Loading Loading
core/java/android/hardware/input/IInputManager.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.hardware.input; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.KeyboardLayout; import android.hardware.input.IInputDevicesChangedListener; import android.hardware.input.TouchCalibration; import android.os.IBinder; import android.view.InputDevice; import android.view.InputEvent; Loading @@ -39,6 +40,11 @@ interface IInputManager { // applications, the caller must have the INJECT_EVENTS permission. boolean injectInputEvent(in InputEvent ev, int mode); // Calibrate input device position TouchCalibration getTouchCalibrationForInputDevice(String inputDeviceDescriptor); void setTouchCalibrationForInputDevice(String inputDeviceDescriptor, in TouchCalibration calibration); // Keyboard layouts configuration. KeyboardLayout[] getKeyboardLayouts(); KeyboardLayout getKeyboardLayout(String keyboardLayoutDescriptor); Loading
core/java/android/hardware/input/InputManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -499,6 +499,44 @@ public final class InputManager { } } /** * Gets the TouchCalibration applied to the specified input device's coordinates. * * @param inputDeviceDescriptor The input device descriptor. * @return The TouchCalibration currently assigned for use with the given * input device. If none is set, an identity TouchCalibration is returned. * * @hide */ public TouchCalibration getTouchCalibration(String inputDeviceDescriptor) { try { return mIm.getTouchCalibrationForInputDevice(inputDeviceDescriptor); } catch (RemoteException ex) { Log.w(TAG, "Could not get calibration matrix for input device.", ex); return TouchCalibration.IDENTITY; } } /** * Sets the TouchCalibration to apply to the specified input device's coordinates. * <p> * This method may have the side-effect of causing the input device in question * to be reconfigured. Requires {@link android.Manifest.permissions.SET_INPUT_CALIBRATION}. * </p> * * @param inputDeviceDescriptor The input device descriptor. * @param calibration The calibration to be applied * * @hide */ public void setTouchCalibration(String inputDeviceDescriptor, TouchCalibration calibration) { try { mIm.setTouchCalibrationForInputDevice(inputDeviceDescriptor, calibration); } catch (RemoteException ex) { Log.w(TAG, "Could not set calibration matrix for input device.", ex); } } /** * Gets the mouse pointer speed. * <p> Loading
core/java/android/hardware/input/TouchCalibration.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.input; parcelable TouchCalibration;
core/java/android/hardware/input/TouchCalibration.java 0 → 100644 +126 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.input; import android.os.Parcel; import android.os.Parcelable; /** * Encapsulates calibration data for input devices. * * @hide */ public class TouchCalibration implements Parcelable { public static final TouchCalibration IDENTITY = new TouchCalibration(); public static final Parcelable.Creator<TouchCalibration> CREATOR = new Parcelable.Creator<TouchCalibration>() { public TouchCalibration createFromParcel(Parcel in) { return new TouchCalibration(in); } public TouchCalibration[] newArray(int size) { return new TouchCalibration[size]; } }; private final float mXScale, mXYMix, mXOffset; private final float mYXMix, mYScale, mYOffset; /** * Create a new TouchCalibration initialized to the identity transformation. */ public TouchCalibration() { this(1,0,0,0,1,0); } /** * Create a new TouchCalibration from affine transformation paramters. * @param xScale Influence of input x-axis value on output x-axis value. * @param xyMix Influence of input y-axis value on output x-axis value. * @param xOffset Constant offset to be applied to output x-axis value. * @param yXMix Influence of input x-axis value on output y-axis value. * @param yScale Influence of input y-axis value on output y-axis value. * @param yOffset Constant offset to be applied to output y-axis value. */ public TouchCalibration(float xScale, float xyMix, float xOffset, float yxMix, float yScale, float yOffset) { mXScale = xScale; mXYMix = xyMix; mXOffset = xOffset; mYXMix = yxMix; mYScale = yScale; mYOffset = yOffset; } public TouchCalibration(Parcel in) { mXScale = in.readFloat(); mXYMix = in.readFloat(); mXOffset = in.readFloat(); mYXMix = in.readFloat(); mYScale = in.readFloat(); mYOffset = in.readFloat(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeFloat(mXScale); dest.writeFloat(mXYMix); dest.writeFloat(mXOffset); dest.writeFloat(mYXMix); dest.writeFloat(mYScale); dest.writeFloat(mYOffset); } @Override public int describeContents() { return 0; } public float[] getAffineTransform() { return new float[] { mXScale, mXYMix, mXOffset, mYXMix, mYScale, mYOffset }; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj instanceof TouchCalibration) { TouchCalibration cal = (TouchCalibration)obj; return (cal.mXScale == mXScale) && (cal.mXYMix == mXYMix) && (cal.mXOffset == mXOffset) && (cal.mYXMix == mYXMix) && (cal.mYScale == mYScale) && (cal.mYOffset == mYOffset); } else { return false; } } @Override public int hashCode() { return Float.floatToIntBits(mXScale) ^ Float.floatToIntBits(mXYMix) ^ Float.floatToIntBits(mXOffset) ^ Float.floatToIntBits(mYXMix) ^ Float.floatToIntBits(mYScale) ^ Float.floatToIntBits(mYOffset); } }
core/res/AndroidManifest.xml +8 −0 Original line number Diff line number Diff line Loading @@ -2069,6 +2069,14 @@ android:description="@string/permdesc_setPointerSpeed" android:protectionLevel="signature" /> <!-- Allows low-level access to setting input device calibration. <p>Not for use by normal applications. @hide --> <permission android:name="android.permission.SET_INPUT_CALIBRATION" android:label="@string/permlab_setInputCalibration" android:description="@string/permdesc_setInputCalibration" android:protectionLevel="signature" /> <!-- Allows low-level access to setting the keyboard layout. <p>Not for use by third-party applications. @hide --> Loading