Spostare da codice il mouse sullo schermo: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 25: | Riga 25: | ||
Dim eventoX, eventoY, fine_evento As New Input_event | Dim eventoX, eventoY, fine_evento As New Input_event | ||
Dim s As String | Dim s, pw As String | ||
Dim fl As File | Dim fl As File | ||
Dim b As Byte | Dim b As Byte | ||
| Riga 33: | Riga 32: | ||
<FONT color=gray>' ''Individuiamo esattamente il file-device del mouse:''</font> | <FONT color=gray>' ''Individuiamo esattamente il file-device del mouse:''</font> | ||
s = File.Load("/proc/bus/input/devices") | s = File.Load("/proc/bus/input/devices") | ||
<FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse...";'' | |||
' ''l'ultima parola della riga sarà il nome del file-device del mouse:''</font> | |||
s = Scan(s, "*Handlers=mouse* * *")[2] | |||
<FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse..." | |||
' '' | |||
<FONT color=gray>' ''Per leggere il file-device individuato, bisogna avere i necessari permessi.'' | <FONT color=gray>' ''Per leggere il file-device individuato, bisogna avere i necessari permessi.'' | ||
' ''Pertanto, se non sono stati modificati i permessi del file-device, allora vengono modificati'' | ' ''Pertanto, se non sono stati modificati i permessi del file-device, allora vengono modificati'' | ||
' ''(bisognerà inserire la propria password !):''</font> | ' ''(bisognerà inserire la propria password !):''</font> | ||
Input pw | |||
If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then | If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then | ||
Shell "echo | Shell "echo " & pw & " | sudo -S chmod 4777 /dev/input" &/ s Wait | ||
Endif | Endif | ||
Versione delle 04:55, 29 set 2017
Per poter spostare da codice sia orizzontalmente che verticalmente il puntatore del mouse all'interno dello schermo, si dovrà agire sul suo file-device /dev/input/mouse... .
Mostriamo di seguito un esempio, nel quale il puntatore viene spostato ripetutamente sia verso destra che in basso:
Public Struct timeval
tv_sec As Long ' secondi
tv_usec As Long ' microsecondi
End Struct
Public Struct input_event
tv As Struct Timeval
type As Short
code As Short
value As Integer
End Struct
Private Const EV_SYN As Short = 0
Private Const EV_REL As Short = 2
Private Const REL_X As Short = 0
Private Const REL_Y As Short = 1
Private Const SYN_REPORT As Short = 0
Public Sub Main()
Dim eventoX, eventoY, fine_evento As New Input_event
Dim s, pw As String
Dim fl As File
Dim b As Byte
' Individuiamo esattamente il file-device del mouse:
s = File.Load("/proc/bus/input/devices")
' Individuiamo la riga contenente il testo "Handlers=mouse...";
' l'ultima parola della riga sarà il nome del file-device del mouse:
s = Scan(s, "*Handlers=mouse* * *")[2]
' Per leggere il file-device individuato, bisogna avere i necessari permessi.
' Pertanto, se non sono stati modificati i permessi del file-device, allora vengono modificati
' (bisognerà inserire la propria password !):
Input pw
If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then
Shell "echo " & pw & " | sudo -S chmod 4777 /dev/input" &/ s Wait
Endif
fl = Open "/dev/input" &/ s For Write
If IsNull(fl) Then Error.Raise("Impossibile aprire il file-device !")
' Assegna i dati per lo spostamento orizzontale del mouse sullo schermo:
With eventoX
.type = EV_REL
.code = REL_X
' Si assegna un valore positivo per lo spostamento a destra,
' un valore negativo per lo spostamento a sinistra:
.value = 100
End With
' Assegna i dati per lo spostamento verticale del mouse sullo schermo:
With eventoY
.type = EV_REL
.code = REL_Y
' Si assegna un valore positivo per lo spostamento in basso,
' un valore negativo per lo spostamento in alto:
.value = 100
End With
With fine_evento
.type = EV_SYN
.code = SYN_REPORT
.value = 0
End With
For b = 1 To 5
Write #fl, eventoX As Input_event ' Sposta il mouse orizzontalmente
Write #fl, fine_evento As Input_event ' Mostra lo spostamento del mouse
Wait 1
Write #fl, eventoY As Input_event ' Sposta il mouse verticalmente
Write #fl, fine_evento As Input_event ' Mostra lo spostamento del mouse
Wait 1
Next
' Va in chiusura:
fl.Close
End