Differenze tra le versioni di "Spostare da codice il mouse sullo schermo"
Da Gambas-it.org - Wikipedia.
Riga 51: | Riga 51: | ||
<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> |
− | |||
Input pw | Input pw | ||
Riga 67: | Riga 66: | ||
.type = EV_REL | .type = EV_REL | ||
.code = REL_X | .code = REL_X | ||
− | <FONT color=gray>' ''Si assegna un valore positivo per lo spostamento a destra, | + | <FONT color=gray>' ''Si assegna un valore positivo per lo spostamento a destra, un valore negativo per lo spostamento a sinistra:''</font> |
− | |||
.value = 100 | .value = 100 | ||
End With | End With | ||
Riga 76: | Riga 74: | ||
.type = EV_REL | .type = EV_REL | ||
.code = REL_Y | .code = REL_Y | ||
− | <FONT color=gray>' ''Si assegna un valore positivo per lo spostamento in basso, | + | <FONT color=gray>' ''Si assegna un valore positivo per lo spostamento in basso, un valore negativo per lo spostamento in alto:''</font> |
− | |||
.value = 100 | .value = 100 | ||
End With | End With |
Versione delle 15:48, 12 mar 2023
Per poter spostare da codice sia orizzontalmente che verticalmente il puntatore del mouse all'interno dello schermo, si potranno adottare almeno due modalità.
Uso del Metodo ".Move()" della Classe Mouse
Si potrà utilizzare il Metodo ".Move( )" della Classe "Mouse", che accetta due parametri formali, i quali rappresentano le coordinate "x" e "y" dall'angolo alto sinistro dello schermo.
Mostriamo un esempio pratico, nel quale il puntatore del mouse sarà spostato al centro dello schermo:
Public Sub Button1_Click() Mouse.Move(Screen.W / 2, Screen.H / 2) End
Uso del file-device della periferica mouse
Quest'altra modalità prevede che agisca sul file-device /dev/input/mouse... del 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
Riferimenti
- https://www.kernel.org/doc/Documentation/input/event-codes.txt
- /usr/include/linux/input-event-codes.h