summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorrmcc <geeksphone@cerqueira.org>2010-10-02 15:27:50 +0100
committerSteve Kondik <shade@chemlab.org>2010-10-23 00:57:40 -0400
commit95d67cf1672c047475fdda8f97a6f556c192ae8e (patch)
treeadab8471ae5294e0b67211d6c2a7da4f5461b0e3 /core/java
parentb160ab0a365ef3a0dd4de78ac2dcf4f2e50f3023 (diff)
downloadframeworks_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.aidl2
-rw-r--r--core/java/android/os/PowerManager.java16
-rw-r--r--core/java/android/text/method/MetaKeyKeyListener.java34
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;
}