[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: