remedio para una rueda de desplazamiento sin rueda de desplazamiento?


30

Estoy pensando en comprar un trackball y mi opción es el mármol Logitech trackman. Pero luego descubrí que no hay rueda de desplazamiento. ¿Cómo abordas eso? ¿Definitivamente quiero comprar un trackball con rueda de desplazamiento? Me desplazo mucho usando Facebook.

No quiero hacer clic con mis dedos índice y medio, por lo que algunos ratones trackball no funcionarán para mí, como el Trackman Wheel.


Prueba la rueda Trackman de Logitech. La oferta de un modelo con cable o inalámbrico.
Moab

No quiero hacer clic con mis dedos índice y medio, por eso quiero una bola de seguimiento con la pelota en el centro. Gracias.
lamwaiman1988

Por lo general, puede configurar cosas como esta con el software de su mouse. Desde allí puede hacer una variedad de cosas (mantenga presionado el botón derecho mientras mueve la bola de seguimiento, etc.). Supongo que probablemente ya haya solucionado su problema, porque lo publicó hace un año . Si no, buena suerte a ti.
HelpingHand

@HelpingHand No, todavía no pude encontrar una solución viable. Ahora estoy usando PageUp y PageDown para desplazarme.
lamwaiman1988

Respuestas:


13

Si estás en Windows, te sugiero que pruebes AutoHotKey, otros usuarios ya han abordado el desplazamiento con el mouse de mármol (utilicé el script en la parte inferior):

http://www.autohotkey.com/board/topic/4677-wheel-button-emulation-script/

La solución de Logitech que viene con sus controladores es extraña: hace clic una vez para habilitar el desplazamiento en 4 direcciones y vuelve a hacer clic para deshabilitarla. No puedes sostener y desplazarte, que es lo que buscaba Terminé desinstalando su software.


Esta solución funciona, pero solo admite el pequeño botón izquierdo de la bola de seguimiento, por lo que deshabilita la función predeterminada 'atrás' para la página web. De todos modos, puedo aceptar esta respuesta después de probarla durante unos días.
lamwaiman1988

NOTA: la secuencia de comandos AHK solo funciona para las bolas de seguimiento con botones X o más de 4 botones.
Michael Paulukonis

Es muy simple actualizar el script para usar un botón diferente. Hay un comentario sobre una asignación variable cerca de la parte superior: cambie "XButton1" a otro valor para usar ese botón. Hay una lista de teclas especiales en el archivo de ayuda de AHK (simplemente ejecute AHK desde el menú Inicio) en "Lista de teclas, botones del mouse y controles de joystick", donde puede elegir cualquier tecla / botón para que actúe como modificador.
James B

9

Tengo el mismo trackball y la solución es muy elegante: cuando haces clic en un botón elegido, la bola se convierte en una rueda de desplazamiento. Elegí el gran botón derecho que presiono con el dedo meñique.

Esto es muy conveniente y solo lleva unos días acostumbrarse.

Rápidamente considerará que cualquier rueda de desplazamiento (en un mouse o una bola de seguimiento) es algo inutilizable. Confía en mí, vale la pena ;-)

Ventajas:

  • Desplazamiento 2D en lugar de 1D
  • Desplazamiento más rápido y preciso que una rueda
  • más cómodo para desplazamiento largo (gracias a la inercia de la pelota). Perfecto para tu ejemplo de Facebook.

No puedo vivir sin eso nunca más.

Configurar eso bajo cualquier sistema operativo Linux no es difícil. Solo requiere que cree un archivo /etc/X11/xorg.conf (consulte mi configuración aquí: Configurar un trackball en Linux sin editar Xorg.conf )

Se pueden encontrar más detalles aquí: https://help.ubuntu.com/community/Logitech_Marblemouse_USB

En Windows, no tengo experiencia, pero creo que se entrega una herramienta de configuración con el trackball.


2
Mi entorno de trabajo es principalmente Windows, por lo que esta no es una opción viable para mí y no tengo idea de cómo transferir esto a Windows.
lamwaiman1988

8

Puede probar la rueda de desplazamiento del mouse de mármol, desarrollada especialmente para ese mouse:

Marble Mouse Scroll Wheel, o simplemente Marble Scroll, es un pequeño programa diseñado para simular una rueda de desplazamiento en cualquier trackball o mouse sin uno. Fue diseñado específicamente para el Logitech Marble Mouse, pero puede funcionar con cualquier mouse estándar o trackball. Está diseñado para Windows 2000 y versiones posteriores.

Marble Scroll es un reemplazo para las funciones de desplazamiento automático y desplazamiento universal de Logitech; ninguno emula correctamente una rueda de desplazamiento real y ambos tienen limitaciones y defectos.

Marble Scroll funciona con cualquier mouse o trackball y no requiere la instalación de los controladores SetPoint o MouseWare de Logitech.

Caracteristicas

  • Agregue una rueda de desplazamiento a cualquier mouse con más de dos botones
  • Compatibilidad con la mayoría de las aplicaciones que admiten una rueda de desplazamiento (para cualquier tipo de entrada)
  • Aceleración ajustable
  • Distancia de desplazamiento ajustable (por "paso" - ver abajo)
  • Desplazamiento escalonado para simular una rueda real del mouse
  • Selector de modo rápido para diestros / zurdos
  • Habilitar / deshabilitar rápidamente haciendo clic en el icono de la bandeja
  • Pequeño y ligero en recursos del sistema

El sitio web del producto parece actualmente inactivo, pero aquí hay una copia del texto del sitio en Archive.org .

Un enlace de descarga está aquí .


En Windows 8 funciona bien.
Justinas Dūdėnas

Esto todavía funciona muy bien en Win7 y 8. Manteniendo presionado el botón Atrás en mi mouse, me permite desplazarme con el trackball. Sin embargo, todavía puedo usar el botón Atrás como botón Atrás. Básicamente agregó funcionalidad sin quitar nada. El mejor tipo de solución.
japzone

1
No parece funcionar de manera confiable en Windows 10 :(
askvictor

1
El espejo de descarga vinculado aparece como malware, no estoy seguro de si es un falso positivo, pero no lo cambia por ahora.
James B

1
Lo he usado durante años, y funciona bien hasta Windows 8, en el que se volvió poco confiable. No lo he probado en Win 10. Le envié un correo electrónico al autor original que respondió (!) Y, aunque había perdido el código fuente, me contó la esencia básica de cómo hacerlo. Lo esencial que me dio es lo que ha hecho esta otra respuesta: superuser.com/a/782571/127024
Johann

8

Existe una alternativa simple de C ++ de 100 líneas que es bastante similar a las soluciones AutoHotKey, es decir

  • enviar eventos de rueda de desplazamiento vertical / horizontal moviendo la bola de seguimiento mientras mantiene presionado uno de los botones X y
  • clic central al presionar y soltar un botón X sin mover la rueda de desplazamiento.

https://github.com/Seelge/TrackballScroll

Editar: las versiones más recientes proporcionan un icono de bandeja del sistema, funcionan en Windows 10 y se basan en C #.


Esta solución es superior a cualquiera de los scripts de AutoHotKey que he probado, todos los cuales sufren de una molesta "sacudida del cursor", debido a un evento impulsado por el tiempo que "mueve el mouse a su posición original" cada tantos milisegundos mientras desplazamiento Este simple ejecutable TrackballScroll no sufre tal limitación y funciona muy bien. La única advertencia es que no funciona de manera confiable en Windows 10 Creator's Update, a partir de este escrito: github.com/Seelge/TrackballScroll/issues/14
Ben Johnson

Estuve usando esto durante años y me encantó (incluso hice +1 en esta respuesta hace más de un año), pero después de cambiar a Windows 10 la semana pasada me gustaría señalar que el error mencionado en el otro comentario todavía no está ' t solucionado, y la falta de fiabilidad lo ha hecho completamente inutilizable para mí en la práctica.
mtraceur

4

Aquí está el script AutoHotKey que uso. Desplácese manteniendo presionado el pequeño botón izquierdo y haciendo rodar la pelota hacia arriba / abajo. Sin embargo, al hacer clic en el botón pequeño de la izquierda todavía se hace BACK También puede desplazarse hacia la izquierda / derecha, pero eso fue demasiado sensible para mí, por lo que está comentado aquí (el bloque que comienza con ;timesX := Abs(movedx) / 4).

Encontré la versión original en http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/ . Publiqué mi versión allí como otra persona8923.

$*XButton1::
Hotkey, $*XButton1 Up, XButton1up, off
;KeyWait, XButton1, T0.4
;If ErrorLevel = 1
;{
   Hotkey, $*XButton1 Up, XButton1up, on
   MouseGetPos, ox, oy
   SetTimer, WatchTheMouse, 5
   movedx := 0
   movedy := 0
   pixelsMoved := 0
;   TrayTip, Scrolling started, Emulating scroll wheel
;}
;Else
;   Send {XButton1}
return

XButton1up:
Hotkey, $*XButton1 Up, XButton1up, off
SetTimer, WatchTheMouse, off
;TrayTip
If (pixelsMoved = 0)
{
    ;The mouse was not moved, send the click event
    ; (May want to make it PGUP or something)
    Send {XButton1}
    Send {XButton1Up}
}
return

WatchTheMouse:
MouseGetPos, nx, ny
movedx := movedx+nx-ox
movedy := movedy+ny-oy

pixelsMoved := pixelsMoved + Abs(nx-ox) + Abs(ny-oy)

;timesX := Abs(movedx) / 4
;ControlGetFocus, control, A
;Loop, %timesX%
;{
;    If (movedx > 0)
;    {
;        SendMessage, 0x114, 1, 0, %control%, A ; 0x114 is WM_HSCROLL
;        movedx := movedx - 4
;    }
;    Else
;    {
;        SendMessage, 0x114, 0, 0, %control%, A ; 0x114 is WM_HSCROLL
;        movedx := movedx + 4
;    }
;}

timesY := Abs(movedy) / 4
Loop, %timesY%
{
    If (movedy > 0)
    {
        Click WheelDown
        movedy := movedy - 4
    }
    Else
    {
        Click WheelUp
        movedy := movedy + 4
    }
}   

MouseMove ox, oy
return

Si prefiere usar el clic derecho, reemplace "XButton1" con "RButton".
Matt Woelk

Esto funciona perfectamente para mí, pero ¿hay alguna manera de hacer que la acción de desplazamiento sea más fluida? He probado los métodos SendMessage y WheelUp / Down para el desplazamiento vertical, y ambos hacen un 'salto'
askvictor

3

Es una pena que Logitech no haya implementado una simulación de rueda de desplazamiento. Su controlador promete una característica para hacerlo, pero no funciona para todas las aplicaciones, por lo que es bastante inútil. ¡Estaban tan cerca de crear el mouse perfecto! : s

La única solución que he encontrado es usar una secuencia de comandos AutoHotkey para ello. Con él puedes hacer que los pequeños botones izquierdo / derecho se desplace hacia arriba y hacia abajo. Funciona perfectamente, pero es una verdadera molestia configurarlo: primero deberá aprender los conceptos básicos de AutoHotkey. Si decide hacerlo, aquí está mi script AutoHotkey. Es una adaptación del guión original de Jerbo . Un solo clic comenzará a desplazarse a un ritmo normal, pero un clic doble o triple comenzará a desplazarse más rápido.

; This script remaps the two small buttons on a Logitech Trackman® Marble® Mouse
; to act as scroll up and scroll down

global lastXButton1ClickTime := 0
global nrSubsequentXButton1Clicks := 0

ScrollTheWheel(direction, scrollKey)
{
    now := A_TickCount
    timeSinceLastClick := now - lastXButton1ClickTime 
    lastXButton1ClickTime := now
    if (timeSinceLastClick < 300)
    {
        nrSubsequentXButton1Clicks := nrSubsequentXButton1Clicks + 1
    }
    else
    {
        nrSubsequentXButton1Clicks := 1
    }        

    sleepingFraction := 5

    if (nrSubsequentXButton1Clicks <= 1)
        scrollSpeed := 30
    if (nrSubsequentXButton1Clicks == 2)
        scrollSpeed := 15
    if (nrSubsequentXButton1Clicks >= 3)
        scrollSpeed := 5

    timeSlept := scrollSpeed

    loop 
    {
        if (direction == 1) ; Scroll down
        {
            static downKeyState
            if (scrollKey == 0) 
                GetKeyState, downKeyState, XButton1, P
            else
                GetKeyState, downKeyState, PgDn, P

            if downKeyState = U ; The key has been released, so break out of the loop
               break

            if (timeSlept >= scrollSpeed)
            {
                Send {WheelDown}
                timeSlept = 0                
            }
        }
        else ; Scroll up
        {
            static upKeyState
            if (scrollKey == 0)
                GetKeyState, upKeyState, XButton2, P
            else
                GetKeyState, upKeyState, PgUp, P

            if upKeyState = U ; The key has been released, so break out of the loop
               break            

            if (timeSlept >= scrollSpeed)
            {
                Send {WheelUp}
                timeSlept = 0                
            }
        }   

        Sleep, sleepingFraction
        timeSlept := timeSlept + sleepingFraction
    }    
}

XButton2::
    ScrollTheWheel(0, 0)
    return
XButton1::
    ScrollTheWheel(1, 0)
    return
!PgUp::
    ScrollTheWheel(0, 1)
    return
!PgDn::
    ScrollTheWheel(1, 1)
    return

También podría presionar la tecla PageUp / PageUp directamente ...
lamwaiman1988

2

Acabo de recibir un mouse Logitech Marble y también tuve el problema de desplazarme. Así que hice este script en AutoHotKey. El botón X a la izquierda permite el desplazamiento, lo que significa que, mientras está hacia abajo, puede desplazarse vertical y horizontalmente con la pelota, y avanzar y retroceder en el navegador con los botones izquierdo y derecho. El botón X derecho tiene la misma acción que el botón central.

Estoy en Windows 7.

#SINGLEINSTANCE FORCE  
GLOBAL status := "basic"
GLOBAL cnt_x
GLOBAL cnt_y

XButton2::MButton

$*XButton1::
    status := "scroll"
    cnt_x := 0
    cnt_y := 0
    MOUSEGETPOS, st_x, st_y
    SETTIMER, _scroll, 30
RETURN

$*XButton1 UP::
    status := "basic"
    SETTIMER, _scroll, OFF
RETURN

_scroll:
    MOUSEGETPOS, cur_x, cur_y
    MOUSEMOVE, st_x, st_y

IF(abs(cur_x-st_x) > abs(cur_y-st_y)) {
    cnt_x := cnt_x + (cur_x-st_x)
    ControlGetFocus, control, A 
    IF (cnt_x > 7) {
        cnt := floor(cnt_x / 8)
        LOOP, %cnt% {
            SendMessage, 0x114, 0, 0, %control%, A
        }
        cnt_x := cnt_x - 8*floor(cnt_x / 8)
    } ELSE IF (cnt_x < -7) {
        cnt := -ceil(cnt_x / 8)
        LOOP, %cnt% {
            SendMessage, 0x114, 1, 0, %control%, A
        }
        cnt_x := cnt_x - 8*ceil(cnt_x / 8)
    }
} ELSE {
    IF (cur_y >= st_y) {
        cnt_y := cnt_y + (cur_y-st_y)**1.2
    } ELSE {
        cnt_y := cnt_y -(st_y-cur_y)**1.2
    }   
    IF (cnt_y > 7) {
        cnt := floor(cnt_y / 8)
        LOOP, %cnt% {
            CLICK WheelUp
        }
        cnt_y := cnt_y - 8*floor(cnt_y / 8)
    } ELSE IF (cnt_y < -7) {
        cnt := -ceil(cnt_y / 8)
        LOOP, %cnt% {
            CLICK WheelDown
        }
        cnt_y := cnt_y - 8*ceil(cnt_y / 8)
    }
}   
RETURN

$*LButton::
    IF (status = "basic") {
        CLICK DOWN Left
    } ELSE IF (status = "scroll") {
        SEND {Browser_Back}
    }
RETURN

$*LButton UP::
    IF (status = "basic") {
        CLICK UP Left
    }
RETURN

$*RButton::
    IF (status = "basic") {
        CLICK DOWN Right
    } ELSE IF (status = "scroll") {
        SEND {Browser_Forward}
    }
RETURN

$*RButton UP::
    IF (status = "basic") {
        CLICK UP Right
    }
RETURN

Había renunciado y usado las teclas arriba y abajo en los teclados. También presionaría el espacio vacío en la barra de desplazamiento para mover la página hacia arriba y hacia abajo.
lamwaiman1988

1

Dependiendo de su sistema operativo, es posible que pueda configurar uno de los botones para permitir el desplazamiento moviendo el puntero cuando lo mantenga presionado. Por ejemplo, el siguiente script habilita esto en el botón 10 de mi mouse (el botón "superior central" del Logitech MX310):

#!/bin/sh
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 290 10
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 286 1
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 287 6 7 4 5

1

Hay tales ratones de mármol (ratones) que tienen una rueda de desplazamiento incluida. De lo contrario, parece que se necesitaría una aplicación o algún script para un mouse sin ruedas junto con el uso de uno de los botones para activar una función de desplazamiento (que anotó en un comentario a otra respuesta, como una solución no aceptable).

Entonces "¿Por qué reinventar la rueda?" Es un buen adagio en este caso.

En estos ejemplos, el elemento está instalado físicamente y hay muchos tipos para elegir. A continuación hay dos ejemplos y estilos.

wh1

O algo como esto: Adesso

wh2



1

Una solución simple (y un desafío ergonómico, digo) es poner la función de desplazamiento en la mano izquierda.

Esto podría lograrse usando un mouse con la mano izquierda / usando un teclado con una rueda de desplazamiento incorporada en su borde izquierdo / asignando funciones de desplazamiento a las teclas de un teclado programable con un programa como Mkey ( http: // www.seriosoft.org/en/index.php ).

¿Por qué creo que esto es más ergonómico? Porque este enfoque distribuye la tensión de manera más uniforme en ambas manos. (Más sobre esto: http://capsoff.org/checklist ).


1

Estoy en Windows7 y estoy usando el Trackball Óptico Kensington Orbit sin desplazarme ; es un trackball de dos botones, sin los botones X requeridos por la mayoría de los scripts y aplicaciones AHK señalados por otros.

Sin embargo, MouseImp está funcionando para mí en Windows7. Es configurable, pero lo tengo configurado para right-click + rollobtener una pantalla de desplazamiento. Es más como un arrastre, por lo que el puntero se mueve, y solo tiene una pantalla a la vez [actualización: la velocidad de desplazamiento es configurable, por lo que puede ser más de "una página"].

Al mismo tiempo, el TrackballWorks de Kensington ha sido configurado para darme un desplazamiento de página abajo left-click + right-click. Desafortunadamente, no puede desplazarse hacia atrás una página a la vez (una u otra).

Esto no es un complemento de producto: es solo lo que he encontrado que funciona con este modelo / tipo de trackball .

Advertencia: estás haciendo clic derecho e izquierdo constantemente, y esto puede generar confusión y enlaces seguidos / activados por js cuando solo quieres dejar de desplazarte . :::suspiro:::


1

Acabo de recibir un trackball inalámbrico en órbita de Kensington, es bastante sorprendente. Tienes la pelota, tienes ambos botones a cada lado y tienes una especie de círculo fuera de la bola de seguimiento que permite desplazarte hacia arriba o hacia abajo en la página. Realmente funciona, y estoy usando Windows y Mac OSX.


1

Realmente hice algo para esto usando AutoHotkey hace un tiempo y pensé que también lo compartiría aquí: Mouse Wheel Emulator

Esto emula el desplazamiento de la rueda del mouse moviéndolo mientras mantiene presionados los botones izquierdo y derecho del mouse.

También puede emular un clic central haciendo clic en los botones izquierdo y derecho del mouse al mismo tiempo.


1

Otra solución para Windows 7 que permite el desplazamiento en todas las aplicaciones, incluido Internet Explorer:

  1. Instale AutoHotKey .
  2. Guarde este script como scroll.ahken el escritorio.
  3. Haga clic derecho en scroll.ahk.
  4. Seleccione Ejecutar script .
  5. Confirme, si se le solicita.

Esto hará que mantener presionado el pequeño botón derecho se desplace verticalmente al mover la bola de seguimiento. El pequeño botón izquierdo es el botón de retroceso.


En caso de que desaparezca el enlace al código de Erik Elmore, aquí está:

;;
;; Emulate_Scrolling_Middle_Button.ahk
;; Author: Erik Elmore <erik@ironsavior.net>
;; Version: 1.1 (Aug 16, 2005)
;;
;; Enables you to use any key with cursor movement
;; to emulate a scrolling middle button.  While
;; the TriggerKey is held down, you may move the
;; mouse cursor up and down to send scroll wheel
;; events.  If the cursor does not move by the
;; time the TriggerKey is released, then a middle
;; button click is generated.  I wrote this for my
;; 4-button Logitech Marble Mouse (trackball),  
;; which has no middle button or scroll wheel.
;;

;; Configuration

;#NoTrayIcon

;; Higher numbers mean less sensitivity
esmb_Threshold = 7

;; This key/Button activates scrolling
esmb_TriggerKey = XButton2

;; End of configuration

#Persistent
CoordMode, Mouse, Screen
Hotkey, %esmb_TriggerKey%, esmb_TriggerKeyDown
HotKey, %esmb_TriggerKey% Up, esmb_TriggerKeyUp
esmb_KeyDown = n
SetTimer, esmb_CheckForScrollEventAndExecute, 10
return

esmb_TriggerKeyDown:
  esmb_Moved = n
  esmb_FirstIteration = y
  esmb_KeyDown = y
  MouseGetPos, esmb_OrigX, esmb_OrigY
  esmb_AccumulatedDistance = 0
return

esmb_TriggerKeyUp:
  esmb_KeyDown = n
  ;; Send a middle-click if we did not scroll
  if esmb_Moved = n
    MouseClick, Middle
return

esmb_CheckForScrollEventAndExecute:
  if esmb_KeyDown = n
    return

  MouseGetPos,, esmb_NewY
  esmb_Distance := esmb_NewY - esmb_OrigY
  if esmb_Distance
    esmb_Moved = y

  esmb_AccumulatedDistance := (esmb_AccumulatedDistance + esmb_Distance)
  esmb_Ticks := (esmb_AccumulatedDistance // esmb_Threshold) ; floor divide
  esmb_AccumulatedDistance := (esmb_AccumulatedDistance - (esmb_Ticks * esmb_Threshold))
  esmb_WheelDirection := "WheelDown"
  if (esmb_Ticks < 0) {
    esmb_WheelDirection := "WheelUp"
    esmb_Ticks := (-1 * esmb_Ticks)
  }

  ;; Do not send clicks on the first iteration
  if esmb_FirstIteration = y
    esmb_FirstIteration = n
  else {
    Loop % esmb_Ticks {
      MouseClick, %esmb_WheelDirection%
    }
  }

  MouseMove,esmb_OrigX,esmb_OrigY,0
return

¡Gracias por esto! Hice dos pequeñas modificaciones a este script: cambié XButton2a XButton1como prefiero el botón izquierdo y agregué un *antes %esmb_TriggerKey%en dos líneas en la #Persistentsección, para que comiencen Hotkey, *%esmb_TriggerKey%. Este último hace que funcione perfectamente con teclas modificadoras, por lo que, por ejemplo, Ctrl + Scroll funciona.
cincodenada

0

Otro usuario de Trackman Marble aquí.

Estoy usando el control de botón X-Mouse para la emulación de desplazamiento. Esta implementación de características no es perfecta allí (¿todavía?), Pero es mucho más útil que la implementación de Logitech en su propio software SetPoint ™.

Recomiendo XMBC a cualquiera que no quiera meterse con AutoHotKey y busque algo que simplemente funcione.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.