Page 1 sur 1

[Touches Fn] Touches de luminosité non fonctionnelles ?

Publié : sam. 25 août 2012, 16:43
par Phyks
Bonjour,

Je possède un ordinateur portable Saturne vendu assemblé par LDLC (ce serait un Clevo W150ER apparemment).

Toutes les touches multimédia (Fn + ...) fonctionnent sauf les touches de luminosité. Je ne peux régler la luminosité de l'écran ni via les préférences de Gnome ni via les touches multimédia. En revanche, toutes les autres touches multimédia fonctionnent (son, extinction de l'écran, wifi, bluetooth...).

Dans /sys/class/backlight, j'ai deux dossiers : acpi_video0 et intel_backlight.
Après test (echo de valeurs dans les fichiers brightness), c'est acpi_video0 qui gère la luminosité (aucun effet pour intel_backlight) via un chiffre entre 0 et 7.

J'ai également essayé de regarder la sortie de xev et de showkeys lors de l'appui sur les touches Fn+F8 et Fn+F9 mais je n'ai absolument aucune sortie qui apparaît.

En jouant avec les paramètres de démarrage, voici ce que j'ai eu :
- acpi_backlight=vendor -> rien
- acpi_osi=Linux -> idem
- acpi_osi= -> les touches de luminosité fonctionnent et le réglage via les paramètres de gnome fonctionne. En revanche, je n'ai toujours aucune sortie dans showkey/xev et je n'ai pas d'OSD.
- acpi_osi=Linux acpi_backlight=vendor -> rien
- acpi_osi=Linux acpi_backlight=legacy -> idem

Y a-t-il un moyen d'avoir les touches pleinement fonctionnelles (touches + OSD) ?

Merci

P.S. : Si ça peut aider, j'ai installé bumblebee pour gérer Optimus sur ce PC.

Re: [Touches Fn] Touches de luminosité non fonctionnelles ?

Publié : sam. 25 août 2012, 22:55
par MrMen
Je pense que tu dois faire ça en root. Perso je me suis fait ça avec un petit truc en C (pas top mais ça fait le boulot. j'ai un warning pas cool quand même mais ça marche).

Je te laisse t'en inspirer. Ensuite tu peux binder tes deux touches en appelant le script avec les bons arguments.

Code : Tout sélectionner

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
int main(int argc, char *argv[]){
  if (argc!=2)
    {
      fprintf(stderr, "Not enough argument\n");
      return 0;
    }
  int i = atoi(argv[1]);
  char *bright = NULL;
  int brightness;
  FILE *file = fopen("/sys/class/backlight/nvidia_backlight/brightness", "r");
  if(file)
    {
      fscanf(file, "%s", &bright);
      brightness = atoi(&bright);
      brightness+=i;
      if (brightness<50)
	{
	  brightness = 0;
	}
      if (brightness>1023)
	{
	  brightness = 1023;
	}
      fclose(file);
      FILE *test = fopen("/sys/class/backlight/nvidia_backlight/brightness", "w");
      fprintf(test, "%d", brightness);
      fclose(test);
    }
  return 0;
}

Re: [Touches Fn] Touches de luminosité non fonctionnelles ?

Publié : dim. 26 août 2012, 01:03
par benjarobin
@Mr_Men Tu as de la chance que cela fonctionne car il y a des erreurs, la plus grosse est la variable bright dont la mémoire n'est pas allouée

Code : Tout sélectionner

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define BACKLIGHT_BRIGHTNESS_FILE "/sys/class/backlight/nvidia_backlight/brightness"
#define BACKLIGHT_BRIGHTNESS_MIN  50
#define BACKLIGHT_BRIGHTNESS_MAX  1023

int main(int argc, char *argv[])
{
	int incr = 0;
	int brightness = 0;
	FILE *file = NULL;
	
	if (argc != 2)
	{
		fprintf(stderr, "Not enough argument\n");
		return 2;
	}
	
	incr = atoi(argv[1]);
	file = fopen(BACKLIGHT_BRIGHTNESS_FILE, "r");
	
	if (file)
	{
		fscanf(file, "%d", &brightness);
		brightness += incr;
	
		if (brightness < BACKLIGHT_BRIGHTNESS_MIN)
		{
			brightness = 0;
		}
		else if (brightness > BACKLIGHT_BRIGHTNESS_MAX)
		{
			brightness = BACKLIGHT_BRIGHTNESS_MAX;
		}
		
		fclose(file);
		file = fopen(BACKLIGHT_BRIGHTNESS_FILE, "w");
		if (file)
		{
			fprintf(file, "%d", brightness);
			fclose(file);
			return 0;
		}
		else
		{
			perror("Fail to open in write mode : " BACKLIGHT_BRIGHTNESS_FILE);
		}
	}
	else
	{
		perror("Fail to open in read mode : " BACKLIGHT_BRIGHTNESS_FILE);
	}
	return 1;
}

Re: [Touches Fn] Touches de luminosité non fonctionnelles ?

Publié : dim. 26 août 2012, 10:36
par MrMen
Ah merci pour les corrections. Je savais quec'était pas Bon mais j'avais pas trop cherché

Re: [Touches Fn] Touches de luminosité non fonctionnelles ?

Publié : lun. 27 août 2012, 15:03
par Phyks
Ok mais j'ai réussi à faire marcher mes touches de luminosité !

Mon problème maintenant est que je n'arrive pas à avoir d'OSD (l'OSD de Gnome par exemple) pour la luminosité.

Merci

Re: [Touches Fn] Touches de luminosité non fonctionnelles ?

Publié : lun. 27 août 2012, 15:11
par MrMen
Bon c'est moins cool mais tu peux faire ça avec des notify…