我正在考虑买一个轨迹球,我的选择是 Logitech trackman marble。但后来我发现它没有滚轮。你如何解决这个问题?我一定要买一个带滚轮的轨迹球吗?我使用 Facebook 时经常滚动。
我不想用食指和中指点击,所以有些轨迹球鼠标对我来说不起作用,比如 Trackman Wheel。
答案1
如果您使用的是 Windows,我建议您尝试使用 AutoHotKey,其他用户已经解决了使用 Marble Mouse 滚动的问题(我使用了底部的脚本):
http://www.autohotkey.com/board/topic/4677-wheel-button-emulation-script/
Logitech 驱动程序附带的解决方案很奇怪:单击一次可启用 4 向滚动,再次单击可禁用它。您无法按住并滚动,而这正是我想要的。我最终卸载了他们的软件。
答案2
有一个简单的 100 行 C++ 替代方案,与 AutoHotKey 解决方案非常相似,即
- 按住某个 X 按钮并移动轨迹球,即可发送垂直/水平滚轮事件;
- 按下并释放 X 按钮时单击鼠标中键而不移动轨迹球。
https://github.com/Seelge/TrackballScroll
编辑:较新的版本提供了系统托盘图标,适用于 Windows 10 并且基于 C#。
答案3
我有同样的轨迹球,解决方案非常优雅:当您单击所选按钮时,球本身就变成了滚轮。我选择了用小指按下的右大按钮。
这是非常方便,只需几天就可以习惯。
您很快就会认为任何滚轮(鼠标或轨迹球上的)都是无法使用的。相信我,这是值得的 ;-)
优点:
- 2D 滚动取代 1D
- 比滚轮滚动更快、更精确
- 更适合长滚动(得益于球的惯性)。非常适合您的 Facebook 示例。
我已经无法没有它了。
在任何 Linux 操作系统下配置它并不难。它只需要你创建一个 /etc/X11/xorg.conf 文件(请参阅此处的配置:在 Linux 下配置轨迹球,无需编辑 Xorg.conf)
更多详情可在这找到:https://help.ubuntu.com/community/Logitech_Marblemouse_USB
在 Windows 上,我没有经验,但我认为轨迹球附带一个配置工具。
答案4
这是我使用的 AutoHotKey 脚本。按住左侧小按钮并上下滚动球即可滚动。但是单击左侧小按钮仍可返回。它也可以左右滚动,但对我来说太敏感了,所以这里注释掉了(以 开头的块;timesX := Abs(movedx) / 4
)。
我找到了原始版本 http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/。我以 anotherperson8923 的身份在那里发布了我的版本。
$*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