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; }
$ 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