Possible de changer la luminosité de l’écran avec C?

En utilisant C sous Linux, serait-il possible de changer la luminosité de l’écran? Ce n’est pas censé être portable autrement que de fonctionner sur mes installations d’Ubuntu et Fedora. Je demande de quelle façon je me connecterais avec l’OS pour changer la luminosité.

Je commencerais par sélectionner dans la liste suivante de pacbges ubuntu, l’outil qui vous permet de gérer la luminosité de votre écran (indice: cela dépend de la marque).

nvidia-settings - Tool of configuring the NVIDIA graphics driver smartdimmer - Change LCD brightness on Geforce cards armada-backlight - adjust backlight of Compaq Armada laptops (E300, M500, M700) ddccontrol - a program to control monitor parameters eeepc-acpi-scripts - Scripts to support suspend and hotkeys on the Asus Eee PC laptop fnfxd - ACPI and hotkey daemon for Toshiba laptops gddccontrol - a program to control monitor parameters spicctrl - Sony Vaio controller program to set LCD backlight brightness tpb - program to use the IBM ThinkPad(tm) special keys xfce4-power-manager - power manager for Xfce desktop xfce4-power-manager-plugins - power manager plugins for Xfce panel xvattr - Utility to change Xv atsortingbutes 

Une fois que vous l’avez sélectionné,

 sudo apt-get build-dep  apt-get source --comstack  

devrait vous mettre sur la bonne voie

Poke /sys/class/backlight/*/brightness . Oui, même en C.

Oui, mais pas de manière portable – vous avez besoin d’une fonction spécifique à la plate-forme, il n’y a rien dans la bibliothèque standard C.

Découvrez la source de xbacklight . Par exemple, le code suivant définit la luminosité de l’écran sur 50%.

 // brightness.c // gcc -o brightness brightness.c -lXrandr -lX11 #include  #include  #include  #define BRIGHTNESS 0.5 // Target brightness between 0.0 and 1.0 int main(int argc, char *argv[]) { Display *dpy; static Atom backlight; int screen = 0, o = 0; Window root; XRRScreenResources *resources; RROutput output; XRRPropertyInfo *info; double min, max; long value; dpy = XOpenDisplay(NULL); backlight = XInternAtom (dpy, "Backlight", True); root = RootWindow(dpy, screen); resources = XRRGetScreenResources(dpy, root); output = resources->outputs[o]; info = XRRQueryOutputProperty(dpy, output, backlight); min = info->values[0]; max = info->values[1]; XFree(info); // Don't need this anymore XRRFreeScreenResources(resources); // or this value = BRIGHTNESS * (max - min) + min; XRRChangeOutputProperty(dpy, output, backlight, XA_INTEGER, 32, PropModeReplace, (unsigned char *) &value, 1); XFlush(dpy); XSync(dpy, False); return 0; }