[Pommed-commits] r305 - in trunk/pommed: . mactel

Julien Blache jblache at alioth.debian.org
Sun Apr 15 14:35:32 UTC 2007


Author: jblache
Date: 2007-04-15 14:35:32 +0000 (Sun, 15 Apr 2007)
New Revision: 305

Modified:
   trunk/pommed/kbd_backlight.h
   trunk/pommed/mactel/kbd_backlight.c
Log:
Add keyboard backlight fading for automatic keyboard backlight.


Modified: trunk/pommed/kbd_backlight.h
===================================================================
--- trunk/pommed/kbd_backlight.h	2007-04-14 19:07:12 UTC (rev 304)
+++ trunk/pommed/kbd_backlight.h	2007-04-15 14:35:32 UTC (rev 305)
@@ -23,6 +23,9 @@
 #define KBD_BACKLIGHT_OFF       0
 #define KBD_BACKLIGHT_MAX       255
 
+/* fading duration in milliseconds */
+#define KBD_BACKLIGHT_FADE_LENGTH 350
+#define KBD_BACKLIGHT_FADE_STEPS 20
 
 #define KBD_INHIBIT_USER        (1 << 0)
 #define KBD_INHIBIT_LID         (1 << 1)

Modified: trunk/pommed/mactel/kbd_backlight.c
===================================================================
--- trunk/pommed/mactel/kbd_backlight.c	2007-04-14 19:07:12 UTC (rev 304)
+++ trunk/pommed/mactel/kbd_backlight.c	2007-04-15 14:35:32 UTC (rev 305)
@@ -26,6 +26,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <string.h>
+#include <time.h>
 
 #include <syslog.h>
 
@@ -87,6 +88,11 @@
 {
   int curval;
 
+  int i;
+  float tmpval;
+  float step;
+  struct timespec fade_step;
+
   FILE *fp;
 
   if (kbd_bck_info.inhibit)
@@ -100,6 +106,35 @@
   if ((val < KBD_BACKLIGHT_OFF) || (val > KBD_BACKLIGHT_MAX))
     return;
 
+  if (who == KBD_AUTO)
+    {
+      fade_step.tv_sec = 0;
+      fade_step.tv_nsec = (KBD_BACKLIGHT_FADE_LENGTH / KBD_BACKLIGHT_FADE_STEPS) * 1000000;
+
+      tmpval = (float)curval;
+      step = (float)(val - tmpval) / (float)KBD_BACKLIGHT_FADE_STEPS;
+
+      for (i = 0; i < KBD_BACKLIGHT_FADE_STEPS; i++)
+	{
+	  tmpval += step;
+
+	  fp = fopen(KBD_BACKLIGHT, "a");
+	  if (fp == NULL)
+	    {
+	      logmsg(LOG_WARNING, "Could not open %s: %s", KBD_BACKLIGHT, strerror(errno));
+	      continue;
+	    }
+
+	  fprintf(fp, "%d", (int)tmpval);
+
+	  fclose(fp);
+
+	  logdebug("KBD backlight value faded to %d\n", (int)tmpval);
+
+	  nanosleep(&fade_step, NULL);
+	}
+    }
+
   fp = fopen(KBD_BACKLIGHT, "a");
   if (fp == NULL)
     {




More information about the Pommed-commits mailing list