#include<fcntl.h>#include<stdio.h>#include<sys/time.h>#include<unistd.h>/* config, avec un qwerty en exemple */structconfig{intkey;char**cmd;};staticchar*echo_q[]={"echo","touche q active",NULL};staticchar*echo_w[]={"echo","touche","w","active",NULL};staticstructconfigmyconf[]={/* { key code, cmd } */{16,echo_q},{17,echo_w},};intmain(intargc,char*argv[]){intkbd,i;struct{structtimevaltime;unsignedshorttype;unsignedshortcode;unsignedintvalue;}ev;if(argc!=2)return2;kbd=open(argv[1],O_RDONLY);if(kbd<0)return1;loop_forever:read(kbd,&ev,sizeof(ev));if(1==ev.type&&1==ev.value){for(i=0;i<sizeof(myconf)/sizeof(structconfig);i++)if(myconf[i].key==ev.code){if(0==fork())execvp(myconf[i].cmd[0],myconf[i].cmd);gotoloop_forever;}/* pour avoir le codekey, sinon commenter: */printf("%d:%d:%d\n",ev.type,ev.code,ev.value);}gotoloop_forever;}
Enregistrer le code dans un fichier inex.c, modifier le myconf comme souhaité, puis un simple :
gcc inex.c -o inex
./inex /dev/inputN
C-c ou kill pour arrêter le programme.
Edit : j’ai oublié la récolte des codes retour des fils, je corrigerai d’ici ce soir... sauf si un autre contributeur s’en charge.
[^] # Re: Côté Xorg...
Posté par PR . En réponse au message Lancer une commande lors de l'appui sur une touche du clavier. Évalué à 2. Dernière modification le 25 novembre 2022 à 13:05.
Enregistrer le code dans un fichier
inex.c, modifier lemyconfcomme souhaité, puis un simple :C-coukillpour arrêter le programme.Edit : j’ai oublié la récolte des codes retour des fils, je corrigerai d’ici ce soir... sauf si un autre contributeur s’en charge.
Mort aux cons !