Gianluca ha scritto: > Giorgio Luciani ha scritto: > > [EMAIL PROTECTED] ha scritto: > >> Salve a tutti, > >> ho la necessità di scrivere un programmino C che sia ingrado di > >> leggere ciò che una tastiera USB invia. > >> Il dispositivo non è proprio una tastiera ma un lettore di tessere che > >> viene visto da Linux (e da Windows) come una testiera USB e quindi se > >> eseguo una lettura mentre è aperto un editor di testo, sullo schermo > >> mi compare la sequenza numerica letta e poi va a capo. > >> Purtroppo io deve intercettare questo evento in background ed eseguire > >> successivi processi. > >> Qualcuno può darmi qualche spunto? Ho iniziato a vedere il sorgente di > >> un keylogger ma è troppo maestoso rispetto a ciò che serve a me. > >> > >> Grazie a tutti, > >> Gianluca > >> > >> > > Ciao, in generale becchi l'output semplicemente con un cat sul device > > corretto in /dev/input/ (nel mio caso, per la tastiera ps2, > > /dev/input/event0) e puoi redirigerlo come ti pare (ad es. via pipe) > > (devi essere root o comunque avere i diritti in lettura). > > Per trovare a realtime il nome esatto del device usb puoi provare a fare > > un grep su > > > cat /proc/bus/input/devices > > > Il problema è poi interpretare i raw data ottenuti come stringhe di > > caratteri. > > Prova a vedere qui, per farti un'idea: > > http://www.linuxquestions.org/questions/showthread.php?t=454869 > > http://www.redsend.org/?p=142 > > > My two cents > > > Grazie per la risposta. > Avevo gia provato a stampare l'output di /dev/input/etc...etc... ma > non era tanto comprensibile! > Ho visto il link che mi hai dato e cercherò di trasformare lo script > Python in C...o in PHP!:) > > Grazie ancora, se hai novità fammi sapere! > > Gianluca > A mio avviso l'idea del file che è stata proposta è piuttosto inutile. Farei tutto via pipe o chiamate dirette all'interno del codice. Il problema non è dove passi i dati, ma come li converti. Provo a dare una piccola idea, presa scopiazzando un po' qua e là. Ti fai un header file con qualcosa tipo:
*char* *decod_key*(*int* key); *const* *char* *decode_key*(*int* key) { *switch*(key){ case(2): *return* *'1'*; *break*; //* num row *// case(3): *return* *'2'*; *break*; case(4): *return* *'3'*; *break*; case(5): *return* *'4'*; *break*; ... ... ... ... } } Per avere le associazioni giuste con le tastiere italiane, prova a scaricarti lkl: http://sourceforge.net/projects/lkl/ (Mai provato, ma visti i sorgenti: nella dir "keymaps" dovrebbero esserci le mappature per la tastiera italiana. Ogni carattere che leggi lo passi a decode_key e poi lo stampi, lo logghi, lo passi a quel che ti pare. Ho scritto idiozie? Spero di no, ma non sono un programmatore c. Magari hai più successo su qualche ng specifico. My (now) four cents. Saluti -- Giorgio Luciani http://www.lucius.it -- Per REVOCARE l'iscrizione alla lista, inviare un email a [EMAIL PROTECTED] con oggetto "unsubscribe". Per problemi inviare un email in INGLESE a [EMAIL PROTECTED] To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]