diff options
author | rmcc <geeksphone@cerqueira.org> | 2010-10-02 15:27:50 +0100 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2010-10-23 00:57:40 -0400 |
commit | 95d67cf1672c047475fdda8f97a6f556c192ae8e (patch) | |
tree | adab8471ae5294e0b67211d6c2a7da4f5461b0e3 /core/java | |
parent | b160ab0a365ef3a0dd4de78ac2dcf4f2e50f3023 (diff) | |
download | frameworks_base-95d67cf1672c047475fdda8f97a6f556c192ae8e.zip frameworks_base-95d67cf1672c047475fdda8f97a6f556c192ae8e.tar.gz frameworks_base-95d67cf1672c047475fdda8f97a6f556c192ae8e.tar.bz2 |
Add framework support for keyboard LEDs (Caps/FN)
Change-Id: I7a6989b53f15e86ced59e5fd31464a2334bbfd68
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/os/IPowerManager.aidl | 2 | ||||
-rw-r--r-- | core/java/android/os/PowerManager.java | 16 | ||||
-rw-r--r-- | core/java/android/text/method/MetaKeyKeyListener.java | 34 |
3 files changed, 52 insertions, 0 deletions
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl index 90ef1cb..e841128 100644 --- a/core/java/android/os/IPowerManager.aidl +++ b/core/java/android/os/IPowerManager.aidl @@ -46,4 +46,6 @@ interface IPowerManager int getLightSensorScreenBrightness(); int getLightSensorButtonBrightness(); int getLightSensorKeyboardBrightness(); + + void setKeyboardLight(boolean on, int key); } diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index f4ca8bc..18a9fe7 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -421,6 +421,22 @@ public class PowerManager } } + /** + * sets the keyboard LED state + * + * @param on boolean state + * @param key 1 for caps, 2 for fn + * + * {@hide} + */ + public void setKeyboardLight(boolean on, int key) + { + try { + mService.setKeyboardLight(on, key); + } catch (RemoteException e) { + } + } + /** * Returns the set of flags for {@link #newWakeLock(int, String) newWakeLock()} * that are supported on the device. diff --git a/core/java/android/text/method/MetaKeyKeyListener.java b/core/java/android/text/method/MetaKeyKeyListener.java index 61ec67f..df33074 100644 --- a/core/java/android/text/method/MetaKeyKeyListener.java +++ b/core/java/android/text/method/MetaKeyKeyListener.java @@ -20,6 +20,12 @@ import android.view.KeyEvent; import android.view.View; import android.text.*; +/* For the hardware keyboard lights */ +import android.os.IPowerManager; +import android.os.RemoteException; +import android.os.ServiceManager; + + /** * This base class encapsulates the behavior for handling the meta keys * (shift and alt) and the pseudo-meta state of selecting text. @@ -155,6 +161,14 @@ public abstract class MetaKeyKeyListener { adjust(content, CAP); adjust(content, ALT); adjust(content, SYM); + try { + IPowerManager power = IPowerManager.Stub.asInterface( + ServiceManager.getService("power")); + if (getMetaState(content, META_SHIFT_ON) <= 0) + power.setKeyboardLight(false, 1); + if (getMetaState(content, META_ALT_ON) <= 0) + power.setKeyboardLight(false, 2); + } catch (RemoteException doe) {} } /** @@ -208,12 +222,32 @@ public abstract class MetaKeyKeyListener { int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) { press(content, CAP); + try { + IPowerManager power = IPowerManager.Stub.asInterface( + ServiceManager.getService("power")); + int state = content.getSpanFlags(CAP); + if (state == PRESSED || state == LOCKED) { + power.setKeyboardLight(true, 1); + } else { + power.setKeyboardLight(false, 1); + } + } catch (RemoteException doe) {} return true; } if (keyCode == KeyEvent.KEYCODE_ALT_LEFT || keyCode == KeyEvent.KEYCODE_ALT_RIGHT || keyCode == KeyEvent.KEYCODE_NUM) { press(content, ALT); + try { + IPowerManager power = IPowerManager.Stub.asInterface( + ServiceManager.getService("power")); + int state = content.getSpanFlags(ALT); + if (state == PRESSED || state == LOCKED) { + power.setKeyboardLight(true, 2); + } else { + power.setKeyboardLight(false, 2); + } + } catch (RemoteException doe) {} return true; } |