B.3.4 Attivare il tasto NumLock all’avvio dell’interfaccia

Per attivare il tasto in maniera automatica all’avvio dell’interfaccia grafica si può far eseguire un programma che simuli la pressione del tasto quando viene attivata la sessione dell’interfaccia grafica. Il codice sorgente del programma (C++) deve essere qualcosa di analogo a quello riportato di seguito (numlock.c)

#include <X11/extensions/XTest.h>
#include <X11/keysym.h>
int main()
{
    /* Tenta di collegarsi all'X server */
    Display* l_disp = XOpenDisplay(NULL);
    if (l_disp == NULL)
       /* errore nel collegamento all'X server */
       return 1;
    /* Simula la pressione (True) del tasto NumLock */
    XTestFakeKeyEvent(l_disp, XKeysymToKeycode(l_disp, XK_Num_Lock), True, CurrentTime);
    /* Simula il rilascio (False) del tasto NumLock */
    XTestFakeKeyEvent(l_disp, XKeysymToKeycode(l_disp, XK_Num_Lock), False, CurrentTime);
    /* Chiude il collegamento con l'X server */
    XCloseDisplay(l_disp);
    return 0;
}
Quindi, si può compilare con il comando2

 
$ gcc numlock.c -o numlock -lX11 -lXtst -I/usr/X11R6/include -L/usr/X11R6/lib  
che produce il file eseguibile numlock. Quindi copiare il file, ad esempio, nella directory /usr/bin e concedere i permessi di esecuzione a tutti gli utenti con il comando

 
$ mode o+x /usr/bin/numlock  
Quindi aggiungere il comando /usr/bin/numlock nel file di avvio dei comandi quando viene avviata la sessione dell’interfaccia grafica. Ad esempio per GNOME si può inserire il comando /usr/bin/numlock nel file ~/.gnome2/session-manual, come di seguito riportato

                                                                        
                                                                        
[Default]
num_clients=1
0,RestartStyleHint=3
0,Priority=50
0,RestartCommand=/usr/bin/numlock
Se si utilizza XDM, si può inserire il comando /usr/bin/numlock nel file /etc/X11/xdm/Xsetup_0.