补救措施没有滚轮轨迹球?


30

我正在考虑购买轨迹球,我的选择是Logitech Trackman大理石。但是后来我发现没有滚轮。您如何解决?我肯定要购买带有滚轮的轨迹球吗?我用facebook滚动了很多。

我不想用食指和中指单击,所以某些轨迹球鼠标对我不起作用,例如“轨迹轮”。


尝试罗技的Trackman Wheel。该产品提供有线或无线型号。
摩押

我不想用食指和中指单击,这就是为什么我想要一个以球为中心的轨迹球的原因。谢谢。
lamwaiman1988

通常,您可以使用鼠标软件来进行此类设置。从那里,您可以执行各种操作(在移动轨迹球时按住右键单击按钮等)。我假设您现在可能已经解决了问题,因为您是在一年前发布的。如果没有,祝你好运。
HelpingHand 2013年

@HelpingHand不,我仍然找不到可行的解决方案。现在,我使用PageUp和PageDown进行滚动。
lamwaiman1988

Answers:


13

如果您使用Windows,建议您尝试使用AutoHotKey,其他用户已经使用大理石鼠标解决了滚动问题(我在底部使用了脚本):

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

Logitech驱动程序随附的解决方案很奇怪:单击一次以启用四向滚动,然后再次单击以禁用它。你不能按住并滚动我所追求的。我决定卸载他们的软件。


此解决方案有效,但仅支持轨迹球上的小左键,因此禁用了默认的网页“返回”功能。无论如何,在尝试了几天后,我可能会接受此答案。
lamwaiman1988

注意:AHK脚本仅适用于带有X按钮或4个以上按钮的轨迹球。
Michael Paulukonis 2014年

更新脚本以使用其他按钮非常简单。在顶部附近的变量赋值上方有一个注释-将“ XButton1”更改为另一个值以使用该按钮。AHK帮助文件中的特殊键列表(只需从“开始”菜单运行AHK)在“键列表,鼠标按钮和操纵杆控件”下,您可以在其中选择任何键/按钮作为修改器。
James B

9

我有一个相同的轨迹球,解决方案非常优雅:单击所选按钮时,球本身就变成了滚轮。我选择了用小手指按下的大右按钮。

非常方便,只需几天即可使用。

您很快就会认为,任何滚轮(在鼠标或轨迹球上)都无法使用。相信我,这是值得的;-)

好处:

  • 2D滚动而不是1D滚动
  • 比滚轮更快更精确的滚动
  • 长滚动(由于球的惯性)更舒适。非常适合您的facebook示例。

没有它,我无法生存。

在任何Linux操作系统下进行配置并不困难。它只需要您创建一个/etc/X11/xorg.conf文件(请在此处查看我的配置:在Linux下配置轨迹球而无需编辑Xorg.conf

可以在这里找到更多详细信息:https : //help.ubuntu.com/community/Logitech_Marblemouse_USB

在Windows上,我没有经验,但是我认为轨迹球附带了一个配置工具。


2
我的工作环境主要是Windows,因此这对我来说不是一个可行的选择,我也不知道如何将其移植到Windows中。
lamwaiman1988

8

您可以尝试专门为该鼠标开发的大理石鼠标滚轮:

Marble Mouse Scroll Wheel(大理石鼠标滚轮),或简称Marble Scroll,是一个小程序,旨在模拟没有任何轨迹球或鼠标的滚轮。它是专门为Logitech大理石鼠标设计的,但可以与任何标准鼠标或轨迹球一起使用。它适用于Windows 2000及更高版本。

Marble Scroll替代了Logitech的Autoscroll和Universal Scroll功能;两者都不能正确模拟真实的滚轮,并且两者都有局限性和缺陷。

Marble Scroll可与任何鼠标或轨迹球配合使用,并且不需要安装Logitech的SetPoint或MouseWare驱动程序。

特征

  • 使用两个以上的按钮向任何鼠标添加滚轮
  • 与大多数支持滚轮的应用程序兼容(适用于任何类型的输入)
  • 可调加速度
  • 可调滚动距离​​(每“步”-见下文)
  • 逐步滚动以模拟真实的鼠标滚轮
  • 快速左/右手模式切换器
  • 通过单击托盘图标快速启用/禁用
  • 轻巧的系统资源

该产品的网站当前似乎已关闭,但这是Archive.org上该网站文本的副本。

下载链接在这里


在Windows 8上运行良好。
JustinasDūdėnas2013年

在Win7和8上仍然可以很好地工作。按住鼠标的后退按钮可让我使用轨迹球滚动。但是我仍然可以将后退按钮用作后退按钮。基本上,它不增加任何功能就增加了功能。最好的解决方案。
japzone 2014年

1
在Windows 10上似乎无法可靠运行:(
askvictor

1
链接的下载镜像显示为恶意软件-不确定其是否为误报,但暂时不作选择。
James B

1
我已经使用了多年,它在Windows 8上也可以正常工作,在Windows 8中它变得不可靠。还没有在Win 10中尝试过它。我给回复的原始作者发了电子邮件(!),尽管他丢失了源代码,但还是告诉了我如何做的基本要点。他给我的要旨是其他答案所做的事情:superuser.com/a/782571/127024
Johann

8

有一个简单的100行C ++替代方案,与AutoHotKey解决方案非常相似,即

  • 在按住X按钮之一的同时,通过移动轨迹球来发送垂直/水平滚动轮事件
  • 在不移动轨迹球的情况下按下并释放X按钮时,单击鼠标中键。

https://github.com/Seelge/TrackballScroll

编辑:较新的版本提供了系统托盘图标,可在Windows 10上运行,并且基于C#。


该解决方案优于我尝试过的所有AutoHotKey脚本,由于时间驱动事件每隔几毫秒就会“将鼠标移回其原始位置”,因此所有这些脚本都会遇到烦人的“光标摇动”滚动。这个简单的TrackballScroll可执行文件不受此限制,并且效果很好。唯一需要注意的是,在撰写本文时,它无法在Windows 10 Creator's Update上可靠地运行:github.com/Seelge/TrackballScroll/issues/14
Ben Johnson,

我已经使用了多年并且喜欢它(一年前我什至对这个答案+1),但是上周切换到Windows 10后,我想指出的是,其他评论中提到的错误仍然是“固定,而这种不可靠性使我在实践中完全无法使用。
mtraceur

4

这是我使用的AutoHotKey脚本。您可以通过按住左小按钮并向上/向下滚动球来滚动。但是,单击左侧的小按钮仍会返回。它也可以向左/向右滚动,但这对我来说太敏感了,因此在此处被注释掉了(以开头的块;timesX := Abs(movedx) / 4)。

我在http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/找到了原始版本 。我在这里以另一个人8923的身份发布了我的版本。

$*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

如果要使用右键单击,请将“ XButton1”替换为“ RButton”。
Matt Woelk

这对我来说几乎是完美的工作,但是有什么方法可以使滚动动作更流畅吗?我已经尝试了垂直滚动的SendMessage和WheelUp / Down方法,并且它们都执行了“跳转”操作
-askvictor

3

罗技没有实现滚轮模拟,真是太可惜了。他们的驱动程序承诺会提供一种功能,但并非对所有应用程序都有效,因此使其无用。他们是如此接近创建完美的鼠标!:s

我发现的唯一解决方法是为其使用AutoHotkey脚本。有了它,您可以使左右的微小按钮上下滚动。它可以完美运行,但是配置它确实很麻烦:您需要首先学习AutoHotkey基础知识。如果您决定这样做,这是我的AutoHotkey脚本。它是Jerbo原始脚本的改编。一次单击将开始以正常速度滚动,但是双击或三次单击将开始快速滚动。

; 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

我还不如直接按了上页/上一页键....
lamwaiman1988

2

我只有Logitech Marble鼠标,也有滚动问题。因此,我已经在AutoHotKey上创建了此脚本。左侧的Xbutton启用滚动功能,这意味着向下滚动时,您可以用球垂直和水平滚动,并可以使用向左和向右按钮在浏览器中前后移动。右侧的Xbutton与中间的按钮具有相同的作用。

我在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

我放弃了键盘上的上下键。我还要按滚动条上的空白区域来上下移动页面。
lamwaiman1988

1

根据您的操作系统,您可能可以配置其中一个按钮以通过在握住鼠标时移动指针来启用滚动。例如,以下脚本在我的鼠标的按钮10(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

有这样的大理石鼠标(鼠标),其中包括滚轮。否则,看起来像非滑行鼠标需要一个应用程序或一些脚本,以及使用其中一个按钮来启用滚动功能(您在另一答案的注释中注明,这是不可接受的解决方案)。

那么“为什么要重新发明轮子?” 在这种情况下是很好的格言。

在这些示例中,该元素是物理安装的,并且有很多类型可供选择。下面是两个示例和样式。

1号

或类似这样的东西:Adesso

白2



1

一个简单的(我说是符合人体工程学的方法)解决方案是将滚动功能放在您的左手边。

这可以通过左手使用鼠标/通过在左边缘使用内置滚轮的键盘/通过将滚动功能分配给使用Mkey(http:// www.seriosoft.org/en/index.php)。

我为什么认为这更符合人体工程学-因为这种方法可以使双手更均匀地分配张力。(有关此内容的更多信息:http : //capsoff.org/checklist)。


1

我在Windows7上使用不带滚动环的Kensington Orbit Optical轨迹球-这是一个两按钮轨迹球,没有其他人指出的大多数AHK脚本和应用程序所需的X按钮。

但是,MouseImp在Windows7上为我工作。它是可配置的,但我已经对其进行了设置,right-click + roll以使我获得滚动屏幕。它更像是一个拖动,因此指针会移动,并且一次只能显示一个屏幕[更新:滚动速率是可配置的,因此可以超过“一页”]。

同时,Kensington的TrackballWorks已配置为让我向下翻页left-click + right-click。不幸的是,它不能一次后滚动一个页面(一个或另一个)。

这不是产品插件,而是我发现可用于此型号/类型的轨迹球的产品

警告:您一直在左右单击,这可能会导致混淆,并且当您只想停止滚动时,会遵循链接/ js激活链接。:::叹:::


1

我刚从肯辛顿得到一个轨道无线轨迹球,这真是太神奇了。您有了球,在每一侧都有两个按钮,并且轨迹球外面有一个圆圈,可以向上或向下滚动页面。它确实有效,并且我在Windows和Mac OSX上使用。


1

实际上我前一段时间使用AutoHotkey为此做了一些事情,并想在这里也分享了它:Mouse Wheel Emulator

按住鼠标左键和右键,左右移动鼠标可模拟鼠标滚轮滚动。

您也可以通过同时单击鼠标左键和鼠标右键来模拟中间点击。


1

Windows 7的另一个解决方案,允许在所有应用程序中滚动,包括Internet Explorer:

  1. 安装AutoHotKey
  2. 将此脚本另存为scroll.ahk桌面。
  3. 右键单击scroll.ahk
  4. 选择运行脚本
  5. 如果出现提示,请确认。

这将使在移动轨迹球时按住小右按钮垂直滚动。左小按钮是后退按钮。


如果到Erik Elmore的代码的链接消失了,则为:

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

这次真是万分感谢!我做了两个小的修改,这个剧本:改XButton2XButton1我喜欢左边的按钮,并且加入了*之前%esmb_TriggerKey%在两线#Persistent部分,所以他们开始Hotkey, *%esmb_TriggerKey%。后者使它可以与修饰键完美配合,例如Ctrl + Scroll即可。
cincodenada

0

另一个Trackman Marble用户在这里。

我正在使用X鼠标按钮控件进行滚动仿真。该功能的实现在那里还不够完善(还好吗?),但是它比Logitech在其自己的SetPoint™软件中的实现更有用。

我向不希望使用AutoHotKey并寻找能解决问题的人的人推荐XMBC。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.