https://foro.gambas-es.org/viewtopic.php?f=10&t=4227&p=48807#p48807
-----------------------------------
Shell
Miercoles, 10 Junio 2020, 11:29

Re: Ejemplo De Uso De Eventos Y Propieades Del Raton
-----------------------------------
Hola!.

Ahora mismo estoy en el equipo secundario y con este ratón va sin ningún problema. Es otro Logitech pero un modelo un poco mas antiguo.
Ayer comprobé que el ratón que no se reconoce, no funcionaba con el ejemplo, pero si podía hacer click en el botón de maximizar con el central...y funcionba...
no de la manera que hace el izquierdo, ( cuestión del tema ).

Con el problema de ayer con el mouse. He aprendido hasta crear este script en bash.

[code linenumbers=false syntax=bash]
#!/bin/bash

# Comprobar si existe el comando en el sistema
# Vamos a comprobar y a usar el comando libinput para mostrar información del ratón

if [ -a "/usr/bin/libinput" ]; then
	echo "El comando libinput existe en su sistema."
	echo "El comando necesita permiso de super usuario para ejecución"	
	while IFS= read -r line
	do 
	    # Se comprueba si la línea de texto leída contiene la palabra Mouse
	    if [[ "$line" == *"Mouse"* ]]; then
	        echo "$line"
	        while IFS= read -r line2        
	        do
	            # Se comprueba que la línea de texto leída no es nula y tiene una longitud superior a cero
	            if [ -n "$line2" ]; then
	                echo "$line2"
	            else
	            	# Esto parece que rompe los dos bucles
	                break
	            fi
	        done
	    fi
	done < <(sudo libinput list-devices)
else
	echo "El comando libinput no existe en su sistema."
	echo "Ejecute primero: sudo apt-get install libinput-tools"
fi
[/code]

Así que aprendí el uso de los bucles, las condicionales, como pasar la salida de un comando....etc,etc.

Hasta mejorar el código de julio sobre los eventos del ratón.

[code linenumbers=false syntax=gambas]
Private botonusado As String

Public Sub Form_Open()
  
  Me.Center
  
  'Para mostrar las coordennadas sobre el PictureBox
  
  PictureBox1.Tracking = True 
  
End

Public Sub PictureBox1_MouseMove()
  
  LabelCoord.text = "X: " & Str$(mouse.x) & " Y: " & Str$(Mouse.y)
  
End

Public Sub PictureBox1_MouseWheel()
  
  Dim haciadonde As String
  
  If Mouse.Delta > 0 Then
    haciadonde = "adelante"
  Else
    haciadonde = "atrás"
  Endif
  
  LabelRueda.Text = "Rueda del ratón, moviendola hacia  " & haciadonde
  
End

Public Sub PictureBox1_Leave()
  
  LabelCoord.text = "X: Y:"
  LabelRueda.text = ""
  LabelRatonInfo.text = ""
  Me.mouse = Mouse.Default
  
End

Public Sub PictureBox1_MouseDown()
  
  botonusado = Evento_MouseDown()
  
End

Public Function Evento_MouseDown() As String
  
  Dim queboton As String
  
  If Mouse.Middle Then
    queboton = "central" 
    Print "central pulsado"
  Endif
  If Mouse.Right Then
    queboton = "derecho"    
  Endif
  
  If Mouse.Left Then
    queboton = "izquierdo"     
  Endif
  
  LabelRatonInfo.Text = "Botón apretado, " & queboton
  
  Return queboton
  
End

Public Sub PictureBox1_MouseUp()
  
  LabelRatonInfo.text = "Bóton soltado " & botonusado
  
End

Public Sub Cursores_Click()
  
  Me.Cursor = New Cursor(Last.Picture)
  Me.Mouse = Mouse.Custom 
  
End
[/code]

En el código original se repiten frases y líneas. Algo también que ocurre es que si tenemos el evento Mouse_Down() sabemos que botón
se ha pulsado, pero no se sabe que botón se dejo de pulsar al hacer Mouse_Up().

Estos eventos no tienen argumentos. Cree una variable  global que almacena que botón se ha pulsado y al crear el evento Mouse_Down()
que llame a una función que la devuelva.

En fin. 

Eso es todo por hoy con los eventos del ratón...

¿ Y si se ha jodido la rueda del otro ratón.. ?. No descarto suciedad.
Pero desde luego no me gusta ese botón en ese ratón...es algo espartano.
En este es más cómodo...mmmm... :roll: 


Nota. Si los ratones pudieran abollarse por los golpes que podamos darles, seriamos denunciados por malos tratos!.

Saludos


