[C] accedere al mouse basso livello O.S. Unix-like

di il
5 risposte

[C] accedere al mouse basso livello O.S. Unix-like

Buongiorno a tutti,

So che in Unix "Tutto è un file", quindi anche il mouse come periferica avrà un suo file, come la tastiera è nella maggior parte dei casi stdin.

Volevo sapere come si può, tramite il C, accedere ai dati riguardanti il mouse/ trackpad. La mia è una pura curiosità non ho codici da mostrare o da scrivere, anche perché se ne avessi bisogno userei delle librerie, ma mi interesso sempre molto a come funzionano le cose, soprattutto le librerie che uso.

Grazie a tutti in anticipo.

5 Risposte

  • Re: [C] accedere al mouse basso livello O.S. Unix-like

    Ma guarda che non solo in Unix tutto viene gestito da software, ma anche negli altri O.S. naturalmente, altrimenti non funzionerebbe nessuna delle periferiche di sistema.

    Sinceramente non mi sono mai interessato a gestire direttamente una periferica tipo: mouse oppure tastiera in "C", o per meglio dire, non mi sono mai cimentato nel modificare la libreria di sistema che viene utilizzata per gestire tali periferiche...
    ... quindi, premesso che la mi risposta risulta mooolto generica, posso ddirti con assoluta certezza che il Sistema Operativo di una macchina gestisce tutti questi accessori tramite librerie apposite che volendo potrebbero anche essere modificate, ma in che modo non saprei...

    Se fossi in grado, potresti addirittura creartene una tua per la gestione de mouse e sostituirla con quella di sistema, ma dovresti conoscere molto bene tutti i vari indirizzamenti a cui ogni singola libreria di sistema si appoggia...

    Potresti teoricamente crearti delle nuove librerie per la gestione degli schermi e fare tutto un sistema a schermi virtuale che si appoggia sopra il già esistente sistema di base...
    Questo è in linea generale quello che che fanno gli emulatori di sistemi virtualizzati direttamente sul Web...

    Ecco un esempio FriendUp (un intero OS sul Web):
    https://eu.openfriendup.net/webclient/index.htm

    Eccone un altro ancora più interessante (Completa emulazione di AmigaOS sul Web):
    http://www.taws.ch/WB.htm
    Quest'ultimo funziona bene solo con Chrome
  • Re: [C] accedere al mouse basso livello O.S. Unix-like

    In Windows (ma suppongo anche in tutti gli altri sistemi operativi), mouse, tastiera ed altre periferiche di input generano EVENTI che vengono intercettati dalla window con il focus per la tastiera (NE ESISTE Al PIU' UNA) oppure la window su cui il mouse passa in quel momento (che, al minimo, e' il desktop).

    Per Windows ci sono degli HOOK, cioe' dei punti nello stack di gestione di questi eventi (dall'hardware all'invio dell'evento alla window) in cui un'applicazione puo' registrare delle callback, in modo da intercettare l'evento per tempo.

    Tra l'altro, e' esattamente cosi che fanno i keylogger: registrano delle callback, quindi salvano i tasti premuti su file.

    Per Windows, trovi tutto su MSDN
  • Re: [C] accedere al mouse basso livello O.S. Unix-like

    Nosba ha scritto:


    Buongiorno a tutti,

    So che in Unix "Tutto è un file", quindi anche il mouse come periferica avrà un suo file
    ...ed infatti i file-device del classico mouse puoi trovarli nel percorso: /dev/input/
    All'interno della cartella sono comunque afferenti al mouse i file-device nominati: mouse(n), mice ed anche event(n).
    Con riferimento ai file-device con identificatore event(n), per conoscere a quale periferica ciasuno di loro si riferisce, puoi consultare il file leggibile, posto nel seguente percorso: "/proc/bus/input/devices"

    Essendo file protetti, affinché possano essere aperti in lettura (come un quasiasi file), vanno preliminarmente cambiati i permessi con le modalità consuete.
    Va precisato che ad ogni evento del mouse dal file-device sono agevolmente leggibili dei valori che vanno poi interpretati a seconda del tipo di evento intercettato.
  • Re: [C] accedere al mouse basso livello O.S. Unix-like

    Grazie mille a tutti, ho letto un po' di documentazione su MSDN come ha consigliato migliorabile per windows ed ho visto anche su sistemi Unix come vengono utilizzati i file device.

    Ora devo solo capire come si intercettano gli eventi, ma questa è una cosa che immagino dipenda dal sistema operativo e che potrò trovare sulle documentazioni dei vari sistemi.

    Vi ringrazio ancora le vostre risposte mi sono state molto utili per capire dove e soprattutto cosa cercare.
  • Re: [C] accedere al mouse basso livello O.S. Unix-like

    Per un esempio di codice in C con lettura dei dati dal file-device /dev/input/event(n) attinente al mouse:

    http://cboard.cprogramming.com/linux-programming/166412-intercepting-usb-traffic-generated-mouse.html#4
Devi accedere o registrarti per scrivere nel forum
5 risposte