Image

Image

Search This Blog

Sunday, February 14, 2010

Laptop brightness

Elitebook-ul meu nu vrea sa mapeze Fn+F9 / Fn+F10 pentru brightness down/up. Fn+F11 merge (light sensor), dar F9 si F10 nu. Nici macar in xev nu apare nimic. Kde power management in schimb modifica brightness-ul in functie de power-profile pe care il aplica, e doar o problema de key-mapping. Mai mult, un echo 1-10 in /sys/class/backlight/acpi_video0/brightness imi schimba brightness-ul, deci tot ce am de facut e sa mapez miste taste care sa trimita un +1 / -1 in /sys/class/backlight/acpi_video0/brightness Nu pot face asta direct dintr-un script pentru ca va trebui sa-l fac suid root, iar mai nou (http://en.wikipedia.org/wiki/Setuid#setuid_on_executables ) nu prea mai poti sa suid un script. Sa scriem deci un programel care sa poata fi suid root.

#include 

void usage()
{
fprintf(stderr, "Usage: lcd-brightness [value]\n");
}

int main(int argc, char *argv[])
{
FILE *fp;
int bright = 0;
const char *kFileName =
"/sys/class/backlight/acpi_video0/brightness";

switch (argc) {
case 1:
fp = fopen(kFileName, "r");
fscanf(fp, "%d", &bright);
printf("%d\n", bright);
break;
case 2:
fp = fopen(kFileName, "w");
bright = atoi(argv[1]);
fprintf(fp, "%d\n", bright);
break;
default:
usage();
return -1;
}

fclose(fp);
return 0;
}

sa-l salvam undeva in path cu numele brightness si acum putem mapa niste taste in kde care sa-l apeleze:


Iar ca si command scriem:

brightness $(expr $(brightness) - 1); kdialog 
--passivepopup "Decrease Brightness to `cat 
/sys/class/backlight/acpi_video0/brightness`" 1
- asta va da un frumos notification pop-up cand este apelat:

Evident, trebuie mapata o combinatie si pentru Brightness up, care va face +1 in loc de -1 in comanda.

No comments:

Post a Comment

Blog Archive