Re: xbacklight(luminosité de l'écran) et xbindkeys sur un Samsung NC10
On Thu, Feb 23, 2012 at 12:22:47PM +0100, Benoit B wrote:
> Bonjour à tous,
>
> Pour gérer la luminosité de l'écran de mon notebook, j'ai ajouté ceci
> dans .xbindkeysrc :
>
> #Augmenter la luminosité
> "xbacklight -inc 15"
> XF86MonBrightnessUp
>
> # Diminuer la luminosité
> "xbacklight -dec 15"
> XF86MonBrightnessDown
>
[..]
J'ai un NC110, xbackilight ne marchait pas du tout pour moi donc j'ai
fait un qques ligne de code pour changer la valeur dans /sys. J'ai
fait un programme en C pcq on ne peut pas mettre un script suid, mais
une solution via sudo aurait ete aussi bonne.
Ci joint le bout de code C, a modifier selon le besoin (ou a jeter si
ca ne plait pas).
--
xakz
#include <stdio.h>
#include <stdlib.h>
#define BRIGHTNESS_FILE "/sys/class/backlight/intel_backlight/brightness"
#define PRINT_OLD 1
#define BRIGHTNESS_MAX 12000
void mod_brightness(int delta);
void set_brightness(int bright);
int get_brightness();
int main(int ac, char *av[])
{
int bright = 0;
int is_delta = 0;
if (ac < 2)
{
fprintf(stderr, "%s [+|-]VALUE\n", av[0]);
exit(EXIT_FAILURE);
}
bright = atoi(av[1]);
if (av[1][0] == '+' || bright < 0)
is_delta = 1;
if (is_delta)
{
if (bright > 0)
fprintf(stderr, "Increasing brightness by %d\n", bright);
else if (bright < 0)
fprintf(stderr, "Decreasing brightness by %d\n", -bright);
mod_brightness(bright);
}
else
{
fprintf(stderr, "Setting brightness to %d\n", bright);
set_brightness(bright);
}
return 0;
}
void mod_brightness(int delta)
{
int bright;
bright = get_brightness();
#ifdef PRINT_OLD
fprintf(stderr, "Old brightness was %d\n", bright);
#endif
bright += delta;
set_brightness(bright);
}
void set_brightness(int bright)
{
FILE *fd;
if (bright < 0)
bright = 0;
else if (bright > BRIGHTNESS_MAX)
bright = BRIGHTNESS_MAX;
fd = fopen(BRIGHTNESS_FILE, "w");
if (!fd)
{
perror("Unable to open " BRIGHTNESS_FILE);
exit(EXIT_FAILURE);
}
fprintf(fd, "%d\n", bright);
if (ferror(fd))
{
perror("Unable to write " BRIGHTNESS_FILE);
exit(EXIT_FAILURE);
}
fclose(fd);
}
int get_brightness()
{
FILE *fd;
char buffer[64];
size_t r;
fd = fopen(BRIGHTNESS_FILE, "r");
if (!fd)
{
perror("Unable to open " BRIGHTNESS_FILE);
exit(EXIT_FAILURE);
}
r = fread(buffer, 1, 63, fd);
if (ferror(fd) || !r)
{
perror("Unable to read " BRIGHTNESS_FILE);
exit(EXIT_FAILURE);
}
fclose(fd);
buffer[r] = 0;
return atoi(buffer);
}
Reply to: