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 39: | Riga 39: | ||
<FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse...", | <FONT color=gray>' ''Individuiamo la riga contenente il testo "Handlers=mouse...", | ||
' ''e quindi raccogliamo l'ultima parola della riga medesima.'' | ' ''e quindi raccogliamo l'ultima parola della riga medesima.'' | ||
' ''Tale parola sarà | ' ''Tale parola sarà il nome del file-device del mouse:''</font> | ||
If ss[b] Like "Handlers=mouse*" Then s = ss[b + 1] | If ss[b] Like "Handlers=mouse*" Then s = ss[b + 1] | ||
Next | Next | ||
Versione delle 19:14, 10 mag 2014
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 As String
Dim ss As String[]
Dim fl As File
Dim b As Byte
' Individuiamo esattamente il file-device del mouse:
s = File.Load("/proc/bus/input/devices")
s = Replace$(s, "\n", " ")
ss = Split(s, " ", "", True)
For b = 0 To ss.Max
' Individuiamo la riga contenente il testo "Handlers=mouse...",
' e quindi raccogliamo l'ultima parola della riga medesima.
' Tale parola sarà il nome del file-device del mouse:
If ss[b] Like "Handlers=mouse*" Then s = ss[b + 1]
Next
'''''''''''
' 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 !):
If Stat("/dev/input" &/ s).Auth <> "rwsrwxrwx" Then
Shell "echo 'password' | 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