Differenze tra le versioni di "Intercettare i dati del mouse dal file-device hidraw"

Da Gambas-it.org - Wikipedia.
 
(9 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Il file-device ''/dev/hidraw'' fornisce un'interfaccia non elaborata a dispositivi di interfaccia umana (HID) come l'USB e il Bluetooth. I report sono inviati e ricevuti dal dispositivo non modificati.
 
Il file-device ''/dev/hidraw'' fornisce un'interfaccia non elaborata a dispositivi di interfaccia umana (HID) come l'USB e il Bluetooth. I report sono inviati e ricevuti dal dispositivo non modificati.
 +
<BR>Il nome del file-device termina con un numero d'indice: ''/dev/hidraw(n)''
  
Leggendo questo file-devic è possibile intercettare i dati grezzi dal mouse, che rappresentano eventi sui tasti.
+
Leggendo questo file-device è possibile intercettare i dati grezzi dal mouse, che possono essere la direzione dello spostamento del mouse e la pressione sui tasti.
  
 
+
Mostriamo qualche esempio pratico.
Mostriamo un esempio pratico.
 
 
<BR>E' necessario privare preliminarmente il file-device della sua protezione.
 
<BR>E' necessario privare preliminarmente il file-device della sua protezione.
 
<BR>Quindi si potrà usare il seguente codice:
 
<BR>Quindi si potrà usare il seguente codice:
Riga 10: Riga 10:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
+
 +
<FONT Color=gray>' ''Elimina la protezione al file-device:''</font>
 +
  Shell "echo '<FONT Color=darkgreen>''MIA_PASSWORD''</font>' | sudo -S chmod 444 /dev/hidraw0" Wait
 +
 
  <FONT Color=gray>' ''Apre il file-device in lettura e lo sottopone in "osservazione":''</font>
 
  <FONT Color=gray>' ''Apre il file-device in lettura e lo sottopone in "osservazione":''</font>
 
   fl = Open "/dev/hidraw0" For Read Watch
 
   fl = Open "/dev/hidraw0" For Read Watch
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub File_Read()  <FONT Color=gray>' ''Se qualcosa può essere letto dal file-device, si attiva questa routine''</font>
+
  Public Sub File_Read()  <FONT Color=gray>' ''Se qualcosa può essere letto dal file-device, si attiva questa routine''</font>
 
    
 
    
   Dim b As Byte
+
   Dim s As String
 
    
 
    
  <FONT Color=gray>' ''Legge un dato Byte dal file-device:''</font>
+
  <FONT Color=gray>' ''Legge 4 dati stringa dal file-device:''</font>
   Read #fl, b
+
   Read #fl, s, -4
 
    
 
    
   Print b
+
<FONT color=gray>' ''Poiché una variabile stringa è comunque un puntatore ad un'area riservata, dereferenziamo detta variabile con l'apposita funzione di dereferenziazione che restituisce un tipo "Intero", e ne andiamo a leggere il valore:''</font>
 +
   Print Int@(s)
 
    
 
    
  '''End'''
+
  End
 +
oppure usando le risorse della Classe "Process":
 +
Private pr As Process
 +
 +
 +
Public Sub Form_Open()
 +
 +
  Shell "echo '<FONT Color=darkgreen>''MIA_PASSWORD''</font>' | sudo -S chmod 444 /dev/hidraw0" Wait
 +
 +
  pr = Shell "cat /dev/hidraw0" For Read As "Processo"
 +
 
 +
End
 +
 +
 +
Public Sub Processo_Read()
 +
 +
  Dim s As String
 +
 +
  Read #pr, s, -4
 +
 +
  Print Int@(s)
 +
 +
End
  
  
====Dati intercettati====
+
==Dati intercettati==
 
La lettura del file-device può restituire i seguenti valori:
 
La lettura del file-device può restituire i seguenti valori:
<BR><B>0</B> : nessun tasto del mouse è premuto;
+
<BR><B>0</B> : rilascio del tasto premuto del mouse;
 
<BR><B>1</B> : è premuto il tasto sinistro del mouse;
 
<BR><B>1</B> : è premuto il tasto sinistro del mouse;
 
<BR><B>2</B> : è premuto il tasto destro del mouse;
 
<BR><B>2</B> : è premuto il tasto destro del mouse;
 +
<BR><B>3</B> : sono premuti contemporaneamente il tasto sinistro e quello destro del mouse;
 
<BR><B>4</B> : è premuto il tasto centrale (rotellina) del mouse;
 
<BR><B>4</B> : è premuto il tasto centrale (rotellina) del mouse;
 
<BR><B>5</B> : sono premuti contemporaneamente il tasto sinistro e quello centrale (rotellina) del mouse;
 
<BR><B>5</B> : sono premuti contemporaneamente il tasto sinistro e quello centrale (rotellina) del mouse;
<BR><B>6</B> : sono premuti contemporaneamente il tasto destro e quello centrale (rotellina) del mouse.
+
<BR><B>6</B> : sono premuti contemporaneamente il tasto centrale (rotellina) e quello destro del mouse;
 +
<BR><B>7</B> : sono premuti contemporaneamente il tasto sinistro, quello centrale (rotellina) e quello destro del mouse;
 +
<BR><BR><B>16777216</B> : rotazione in alto della rotellina del mouse;
 +
<BR><B>-16777216</B> : rotazione in basso della rotellina del mouse;
 +
<BR><BR><B>256</B> : spostamento a destra del puntatore del mouse;
 +
<BR><B>65280</B> : spostamento a sinistra del puntatore del mouse;
 +
<BR><B>65536</B> : spostamento in basso del puntatore del mouse;
 +
<BR><B>16711680</B> : spostamento in alto del puntatore del mouse.
  
  

Versione attuale delle 20:15, 27 nov 2023

Il file-device /dev/hidraw fornisce un'interfaccia non elaborata a dispositivi di interfaccia umana (HID) come l'USB e il Bluetooth. I report sono inviati e ricevuti dal dispositivo non modificati.
Il nome del file-device termina con un numero d'indice: /dev/hidraw(n)

Leggendo questo file-device è possibile intercettare i dati grezzi dal mouse, che possono essere la direzione dello spostamento del mouse e la pressione sui tasti.

Mostriamo qualche esempio pratico.
E' necessario privare preliminarmente il file-device della sua protezione.
Quindi si potrà usare il seguente codice:

Private fl As File


Public Sub Main()

' Elimina la protezione al file-device:
  Shell "echo 'MIA_PASSWORD' | sudo -S chmod 444 /dev/hidraw0" Wait

' Apre il file-device in lettura e lo sottopone in "osservazione":
 fl = Open "/dev/hidraw0" For Read Watch
 
End


Public Sub File_Read()   ' Se qualcosa può essere letto dal file-device, si attiva questa routine
 
 Dim s As String
 
' Legge 4 dati stringa dal file-device:
 Read #fl, s, -4
 
' Poiché una variabile stringa è comunque un puntatore ad un'area riservata, dereferenziamo detta variabile con l'apposita funzione di dereferenziazione che restituisce un tipo "Intero", e ne andiamo a leggere il valore:
 Print Int@(s)
 
End

oppure usando le risorse della Classe "Process":

Private pr As Process


Public Sub Form_Open()

 Shell "echo 'MIA_PASSWORD' | sudo -S chmod 444 /dev/hidraw0" Wait

 pr = Shell "cat /dev/hidraw0" For Read As "Processo"
  
End


Public Sub Processo_Read()

 Dim s As String

 Read #pr, s, -4

 Print Int@(s)

End


Dati intercettati

La lettura del file-device può restituire i seguenti valori:
0 : rilascio del tasto premuto del mouse;
1 : è premuto il tasto sinistro del mouse;
2 : è premuto il tasto destro del mouse;
3 : sono premuti contemporaneamente il tasto sinistro e quello destro del mouse;
4 : è premuto il tasto centrale (rotellina) del mouse;
5 : sono premuti contemporaneamente il tasto sinistro e quello centrale (rotellina) del mouse;
6 : sono premuti contemporaneamente il tasto centrale (rotellina) e quello destro del mouse;
7 : sono premuti contemporaneamente il tasto sinistro, quello centrale (rotellina) e quello destro del mouse;

16777216 : rotazione in alto della rotellina del mouse;
-16777216 : rotazione in basso della rotellina del mouse;

256 : spostamento a destra del puntatore del mouse;
65280 : spostamento a sinistra del puntatore del mouse;
65536 : spostamento in basso del puntatore del mouse;
16711680 : spostamento in alto del puntatore del mouse.


Riferimenti