remède pour un trackball sans molette de défilement?


30

Je pense acheter un trackball et mon option est le marbre Logitech trackman. Mais j'ai découvert qu'il n'y avait pas de molette de défilement. Comment abordez-vous cela? Ai-je vraiment envie d'acheter un trackball avec molette de défilement? Je défile beaucoup sur Facebook.

Je ne veux pas cliquer avec mon index et mon majeur, donc certaines souris trackball ne fonctionneront pas pour moi, comme la Trackman Wheel.


Essayez la Trackman Wheel de Logitech. L'offre un modèle filaire ou sans fil.
Moab

Je ne veux pas cliquer avec mon index et mon majeur, c'est pourquoi je veux un trackball avec le ballon au centre. Merci.
lamwaiman1988

Vous pouvez généralement configurer des choses comme ça avec votre logiciel de souris. De là, vous pouvez faire une variété de choses (maintenez le bouton droit enfoncé tout en déplaçant la boule de commande, etc.). Je suppose que vous avez probablement déjà résolu votre problème, car vous l'avez publié il y a un an . Sinon, bonne chance à toi.
HelpingHand

@HelpingHand Nope Je ne trouvais toujours pas de solution viable. Maintenant, j'utilise PageUp et PageDown pour le défilement.
lamwaiman1988

Réponses:


13

Si vous êtes sous Windows, je vous suggère d'essayer AutoHotKey, d'autres utilisateurs ont déjà abordé le défilement avec la souris Marble (j'ai utilisé le script en bas):

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

La solution de Logitech fournie avec leurs pilotes est étrange: vous cliquez une fois pour activer le défilement à 4 directions et cliquez à nouveau pour le désactiver. Vous ne pouvez pas tenir et faire défiler, c'est ce que je recherchais. J'ai fini par désinstaller leur logiciel.


Cette solution fonctionne mais ne prend en charge que le petit bouton gauche sur la boule de commande afin de désactiver sa fonction de retour par défaut pour la page Web. Quoi qu'il en soit, je peux accepter cette réponse après l'avoir essayée pendant quelques jours.
lamwaiman1988

REMARQUE: le script AHK ne fonctionne que pour les trackballs avec boutons X ou les trackballs à 4 boutons et plus.
Michael Paulukonis

Il est très simple de mettre à jour le script pour utiliser un bouton différent. Il y a un commentaire au-dessus d'une affectation de variable près du haut - remplacez "XButton1" par une autre valeur pour utiliser ce bouton à la place. Il y a une liste de touches spéciales dans le fichier d'aide AHK (il suffit d'exécuter AHK à partir du menu Démarrer) sous "Liste des touches, boutons de souris et commandes du joystick", où vous pouvez choisir n'importe quelle touche / bouton pour agir comme modificateur.
James B

9

J'ai le même trackball et la solution est très élégante: lorsque vous cliquez sur un bouton choisi, la balle elle-même devient une molette de défilement. J'ai choisi le gros bouton droit que j'appuie avec l'auriculaire.

C'est très pratique et il ne faut que quelques jours pour s'y habituer.

Vous considérerez rapidement que toute molette de défilement (sur une souris ou une boule de commande) est quelque chose d'inutilisable. Croyez-moi, ça vaut le coup ;-)

Avantages:

  • Défilement 2D au lieu de 1D
  • défilement plus rapide et plus précis qu'une roue
  • plus confortable pour un long défilement (grâce à l'inertie de la balle). Parfait pour votre exemple facebook.

Je ne peux plus vivre sans.

Configurer cela sous n'importe quel OS Linux n'est pas difficile. Il vous suffit de créer un fichier /etc/X11/xorg.conf (voir ma config ici: Configurer un trackball sous Linux sans éditer Xorg.conf )

Plus de détails peuvent être trouvés ici: https://help.ubuntu.com/community/Logitech_Marblemouse_USB

Sous Windows, je n'ai aucune expérience mais je pense qu'un outil de configuration est livré avec le trackball.


2
Mon environnement de travail est principalement Windows, donc ce n'est pas une option viable pour moi et je ne sais pas comment le porter dans Windows.
lamwaiman1988

8

Vous pouvez essayer la roulette de défilement Marble Mouse, développée spécialement pour cette souris:

Marble Mouse Scroll Wheel, ou tout simplement Marble Scroll, est un petit programme conçu pour simuler une molette de défilement sur n'importe quel trackball ou souris sans un. Il a été spécialement conçu pour la souris Logitech Marble Mouse mais peut fonctionner avec n'importe quelle souris ou trackball standard. Il est conçu pour Windows 2000 et supérieur.

Marble Scroll remplace les fonctions Autoscroll et Universal Scroll de Logitech; ni émuler correctement une vraie molette de défilement et les deux ont des limites et des défauts.

Marble Scroll fonctionne avec n'importe quelle souris ou trackball et ne nécessite pas l'installation des pilotes SetPoint ou MouseWare de Logitech.

traits

  • Ajoutez une molette de défilement à n'importe quelle souris avec plus de deux boutons
  • Compatibilité avec la plupart des applications prenant en charge une molette de défilement (pour tout type d'entrée)
  • Accélération réglable
  • Distance de défilement réglable (par "étape" - voir ci-dessous)
  • Défilement par étapes pour simuler une vraie molette de souris
  • Sélecteur de mode rapide pour gaucher / droitier
  • Activer / désactiver rapidement en cliquant sur l'icône de la barre d'état
  • Petit et léger sur les ressources système

Le site Web du produit semble actuellement en panne, mais voici une copie du texte du site sur Archive.org .

Un lien de téléchargement est ici .


Sur Windows 8, cela fonctionne bien.
Justinas Dūdėnas

Cela fonctionne toujours très bien sur Win7 & 8. Maintenir le bouton retour de ma souris me permet de faire défiler à l'aide de la boule de commande. Pourtant, je peux toujours utiliser le bouton de retour comme bouton de retour. Fondamentalement, il a ajouté des fonctionnalités sans rien enlever. Le meilleur type de solution.
japzone

1
Ne semble pas fonctionner de manière fiable sur Windows 10 :(
askvictor

1
Le miroir de téléchargement lié apparaît comme un malware - je ne sais pas s'il s'agit d'un faux positif, mais pas pour l'instant.
James B

1
Je l'utilise depuis des années et cela fonctionne très bien jusqu'à Windows 8, dans lequel il est devenu peu fiable. Je ne l'ai pas essayé dans Win 10. J'ai envoyé un courriel à l'auteur d'origine qui a répondu (!) Et bien qu'il ait perdu le code source, il m'a dit l'essentiel de la façon de le faire. L'essentiel qu'il m'a donné est ce que cette autre réponse a fait: superuser.com/a/782571/127024
Johann

8

Il existe une simple alternative C ++ de 100 lignes qui est assez similaire aux solutions AutoHotKey, c'est-à-dire

  • envoyer des événements de molette de défilement verticale / horizontale en déplaçant la boule de commande tout en maintenant l'un des boutons X et
  • clic du milieu lorsque vous appuyez et relâchez un bouton X sans déplacer la boule de commande.

https://github.com/Seelge/TrackballScroll

Edit: les versions plus récentes fournissent une icône systray, fonctionnent sur Windows 10 et sont basées sur C #.


Cette solution est supérieure à tous les scripts AutoHotKey que j'ai essayés, qui souffrent tous d'un "déplacement du curseur" ennuyeux, en raison d'un événement temporel qui "ramène la souris à sa position d'origine" toutes les millisecondes pendant défilement. Ce simple exécutable TrackballScroll ne souffre pas d'une telle limitation et fonctionne très bien. La seule mise en garde est qu'elle ne fonctionne pas de manière fiable sur la mise à jour du créateur de Windows 10, au moment de la rédaction de cet article: github.com/Seelge/TrackballScroll/issues/14
Ben Johnson

J'utilisais cela depuis des années et j'ai adoré (j'ai même attribué la mention +1 à cette réponse il y a plus d'un an), mais après être passé à Windows 10 la semaine dernière, je voudrais souligner que le bogue mentionné dans l'autre commentaire n'est toujours pas ' t corrigé, et le manque de fiabilité le rend complètement inutilisable pour moi dans la pratique.
mtraceur

4

Voici le script AutoHotKey que j'utilise. Vous faites défiler en maintenant enfoncé le petit bouton gauche et en faisant rouler la balle vers le haut / bas. Cependant, cliquer sur le petit bouton gauche fait toujours RETOUR. Il peut également défiler vers la gauche / droite, mais c'était trop sensible pour moi, il est donc commenté ici (le bloc qui commence par ;timesX := Abs(movedx) / 4).

J'ai trouvé la version originale sur http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/ . J'y ai posté ma version en tant qu'autre personne8923.

$*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 vous préférez utiliser le clic droit, remplacez "XButton1" par "RButton".
Matt Woelk

Cela fonctionne à peu près parfaitement pour moi, mais existe-t-il un moyen de rendre l'action de défilement plus fluide? J'ai essayé les méthodes SendMessage et WheelUp / Down pour le défilement vertical, et elles font toutes les deux un "saut"
askvictor

3

C'est vraiment dommage que Logitech n'ait pas implémenté de simulation de molette de défilement. Leur pilote promet une fonctionnalité pour le faire, mais cela ne fonctionne pas pour toutes les applications, ce qui le rend tout à fait inutile. Ils étaient si près de créer la souris parfaite! : s

La seule solution de contournement que j'ai trouvée consiste à utiliser un script AutoHotkey pour cela. Avec lui, vous pouvez faire défiler les minuscules boutons gauche / droite. Cela fonctionne parfaitement, mais c'est très compliqué de le configurer: vous devrez d'abord apprendre les bases d'AutoHotkey. Si vous décidez de le faire, voici mon script AutoHotkey. Il s'agit d'une adaptation du script original de Jerbo . Un simple clic commencera à défiler à un rythme normal, mais un double ou triple clic commencera à défiler plus rapidement.

; 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

Je pourrais aussi bien appuyer directement sur la touche PageUp / PageUp ....
lamwaiman1988

2

Je viens de recevoir une souris Logitech Marble et j'ai également eu le problème de défilement. J'ai donc fait ce script sur AutoHotKey. Le bouton gauche permet le défilement, ce qui signifie qu'en descendant, vous pouvez faire défiler verticalement et horizontalement avec la balle, et avancer et reculer dans le navigateur avec les boutons gauche et droit. Le bouton droit de X a la même action que le bouton central.

Im sur 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

J'avais abandonné et utilisé les touches haut et bas des claviers. J'appuierais également sur l'espace vide de la barre de défilement pour déplacer la page de haut en bas.
lamwaiman1988

1

Selon votre système d'exploitation, vous pourrez peut-être configurer l'un des boutons pour activer le défilement en déplaçant le pointeur lorsqu'il est maintenu enfoncé. Par exemple, le script suivant permet cela sur le bouton 10 de ma souris (le bouton "en haut au milieu" du 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

Il existe de telles souris (souris) en marbre qui ont une molette de défilement incluse. Sinon, il semblerait qu'une application ou un script serait nécessaire pour une souris sans roulette avec l'utilisation d'un des boutons pour activer une fonction de défilement (que vous avez noté dans un commentaire à une autre réponse, comme une solution non acceptable).

Alors "Pourquoi réinventer la roue?" est un bon adage dans ce cas.

Dans ces exemples, l'élément est physiquement installé et il existe de nombreux types parmi lesquels choisir. Voici deux exemples et styles.

wh1

Ou quelque chose comme ça: Adesso

wh2



1

Une solution simple (et j'ose dire ergonomique) est de mettre la fonction de défilement sur votre gauche.

Cela pourrait être réalisé en utilisant une souris avec votre main gauche / en utilisant un clavier avec une molette de défilement intégrée sur son bord gauche / en affectant des fonctions de défilement aux touches d'un clavier programmable avec un programme comme Mkey ( http: // www.seriosoft.org/en/index.php ).

Pourquoi est-ce que je pense que c'est plus ergonomique - parce que cette approche répartit la tension plus uniformément sur les deux mains. (Plus d'informations à ce sujet: http://capsoff.org/checklist ).


1

Je suis sur Windows 7 et j'utilise le trackball optique Kensington Orbit sans défilement - c'est un trackball à deux boutons, sans les boutons X requis par la plupart des scripts et applications AHK signalés par d'autres.

Cependant, MouseImp fonctionne pour moi sur Windows7. IL est configurable, mais je l'ai configuré pour right-click + rollme procurer un écran de défilement. Cela ressemble plus à un glissement, donc le pointeur se déplace, et vous n'avez qu'un seul écran à la fois [mise à jour: le taux de défilement est configurable, il peut donc être supérieur à "une page"].

Dans le même temps, TrackballWorks de Kensington a été configuré pour me faire défiler la page vers le bas left-click + right-click. Malheureusement, il ne peut pas faire défiler une page à la fois (l'un ou l'autre).

Ce n'est pas un plug produit - c'est juste ce que j'ai trouvé pour fonctionner avec ce modèle / type de trackball .

Avertissement: vous cliquez constamment avec le bouton droit et gauche, ce qui peut entraîner des confusions et des liens suivis / activés par js lorsque vous souhaitez simplement arrêter le défilement . :::soupir:::


1

Je viens de recevoir un trackball sans fil en orbite de Kensington, c'est assez incroyable. Vous avez le ballon, vous avez les deux boutons de chaque côté et vous avez une sorte de cercle à l'extérieur du trackball qui permet de faire défiler la page vers le haut ou vers le bas. Cela fonctionne vraiment, et j'utilise sur Windows et Mac OSX.


1

J'ai fait quelque chose pour cela en utilisant AutoHotkey il y a quelque temps et j'ai pensé que je le partagerais ici aussi: Émulateur de molette de souris

Cela émule le défilement de la molette de la souris en déplaçant la souris tout en maintenant les boutons gauche et droit de la souris.

Vous pouvez également émuler un clic du milieu en cliquant simultanément sur les boutons gauche et droit de la souris.


1

Une autre solution pour Windows 7 qui permet le défilement dans toutes les applications, y compris Internet Explorer:

  1. Installez AutoHotKey .
  2. Enregistrer ce script comme scroll.ahksur le bureau.
  3. Faites un clic droit sur scroll.ahk.
  4. Sélectionnez Exécuter le script .
  5. Confirmez, si vous y êtes invité.

Cela fera tenir le petit bouton droit de défilement vertical lors du déplacement de la boule de commande. Le petit bouton gauche est le bouton de retour.


Dans le cas où le lien vers le code d'Erik Elmore disparaît, le voici:

;;
;; 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

Merci pour ça! J'ai fait deux petites modifications à ce script: changé XButton2pour XButton1que je préfère le bouton gauche et ajouté un *avant %esmb_TriggerKey%sur deux lignes dans la #Persistentsection, de sorte qu'ils commencent Hotkey, *%esmb_TriggerKey%. Ce dernier le fait fonctionner parfaitement avec les touches de modification, donc par exemple Ctrl + Scroll fonctionne.
cincodenada

0

Un autre utilisateur de Trackman Marble ici.

J'utilise X-Mouse Button Control pour l'émulation de défilement. Cette implémentation des fonctionnalités n'est pas parfaite (encore?), Mais elle est beaucoup plus utilisable que l'implémentation Logitech dans leur propre logiciel SetPoint ™.

Je recommande XMBC à tous ceux qui ne veulent pas jouer avec AutoHotKey et à la recherche de quelque chose qui fonctionne.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.