我正在考虑购买轨迹球,我的选择是Logitech Trackman大理石。但是后来我发现没有滚轮。您如何解决?我肯定要购买带有滚轮的轨迹球吗?我用facebook滚动了很多。
我不想用食指和中指单击,所以某些轨迹球鼠标对我不起作用,例如“轨迹轮”。
我正在考虑购买轨迹球,我的选择是Logitech Trackman大理石。但是后来我发现没有滚轮。您如何解决?我肯定要购买带有滚轮的轨迹球吗?我用facebook滚动了很多。
我不想用食指和中指单击,所以某些轨迹球鼠标对我不起作用,例如“轨迹轮”。
Answers:
如果您使用Windows,建议您尝试使用AutoHotKey,其他用户已经使用大理石鼠标解决了滚动问题(我在底部使用了脚本):
http://www.autohotkey.com/board/topic/4677-wheel-button-emulation-script/
Logitech驱动程序随附的解决方案很奇怪:单击一次以启用四向滚动,然后再次单击以禁用它。你不能按住并滚动我所追求的。我决定卸载他们的软件。
我有一个相同的轨迹球,解决方案非常优雅:单击所选按钮时,球本身就变成了滚轮。我选择了用小手指按下的大右按钮。
这非常方便,只需几天即可使用。
您很快就会认为,任何滚轮(在鼠标或轨迹球上)都无法使用。相信我,这是值得的;-)
好处:
没有它,我无法生存。
在任何Linux操作系统下进行配置并不困难。它只需要您创建一个/etc/X11/xorg.conf文件(请在此处查看我的配置:在Linux下配置轨迹球而无需编辑Xorg.conf)
可以在这里找到更多详细信息:https : //help.ubuntu.com/community/Logitech_Marblemouse_USB
在Windows上,我没有经验,但是我认为轨迹球附带了一个配置工具。
您可以尝试专门为该鼠标开发的大理石鼠标滚轮:
Marble Mouse Scroll Wheel(大理石鼠标滚轮),或简称Marble Scroll,是一个小程序,旨在模拟没有任何轨迹球或鼠标的滚轮。它是专门为Logitech大理石鼠标设计的,但可以与任何标准鼠标或轨迹球一起使用。它适用于Windows 2000及更高版本。
Marble Scroll替代了Logitech的Autoscroll和Universal Scroll功能;两者都不能正确模拟真实的滚轮,并且两者都有局限性和缺陷。
Marble Scroll可与任何鼠标或轨迹球配合使用,并且不需要安装Logitech的SetPoint或MouseWare驱动程序。
特征
- 使用两个以上的按钮向任何鼠标添加滚轮
- 与大多数支持滚轮的应用程序兼容(适用于任何类型的输入)
- 可调加速度
- 可调滚动距离(每“步”-见下文)
- 逐步滚动以模拟真实的鼠标滚轮
- 快速左/右手模式切换器
- 通过单击托盘图标快速启用/禁用
- 轻巧的系统资源
该产品的网站当前似乎已关闭,但这是Archive.org上该网站文本的副本。
下载链接在这里。
有一个简单的100行C ++替代方案,与AutoHotKey解决方案非常相似,即
https://github.com/Seelge/TrackballScroll
编辑:较新的版本提供了系统托盘图标,可在Windows 10上运行,并且基于C#。
这是我使用的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
罗技没有实现滚轮模拟,真是太可惜了。他们的驱动程序承诺会提供一种功能,但并非对所有应用程序都有效,因此使其无用。他们是如此接近创建完美的鼠标!: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
我只有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
根据您的操作系统,您可能可以配置其中一个按钮以通过在握住鼠标时移动指针来启用滚动。例如,以下脚本在我的鼠标的按钮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
两种非常规选项
除跟踪球外,还请使用Apple Magic Trackpad。(这是我当前的解决方案) http://www.apple.com/magictrackpad/
购买一个跳动控制器,并在轨迹球之外使用它。在设备前挥动手以向上和向下滚动。https://www.leapmotion.com/product
图片来源http://www5.pcmag.com/media/images/393268-leap-motion-controller.jpg
一个简单的(我说是符合人体工程学的方法)解决方案是将滚动功能放在您的左手边。
这可以通过左手使用鼠标/通过在左边缘使用内置滚轮的键盘/通过将滚动功能分配给使用Mkey(http:// www.seriosoft.org/en/index.php)。
我为什么认为这更符合人体工程学-因为这种方法可以使双手更均匀地分配张力。(有关此内容的更多信息:http : //capsoff.org/checklist)。
我在Windows7上使用不带滚动环的Kensington Orbit Optical轨迹球-这是一个两按钮轨迹球,没有其他人指出的大多数AHK脚本和应用程序所需的X按钮。
但是,MouseImp在Windows7上为我工作。它是可配置的,但我已经对其进行了设置,right-click + roll
以使我获得滚动屏幕。它更像是一个拖动,因此指针会移动,并且一次只能显示一个屏幕[更新:滚动速率是可配置的,因此可以超过“一页”]。
同时,Kensington的TrackballWorks已配置为让我向下翻页left-click + right-click
。不幸的是,它不能一次后滚动一个页面(一个或另一个)。
这不是产品插件,而是我发现可用于此型号/类型的轨迹球的产品。
警告:您一直在左右单击,这可能会导致混淆,并且当您只想停止滚动时,会遵循链接/ js激活链接。:::叹:::
我刚从肯辛顿得到一个轨道无线轨迹球,这真是太神奇了。您有了球,在每一侧都有两个按钮,并且轨迹球外面有一个圆圈,可以向上或向下滚动页面。它确实有效,并且我在Windows和Mac OSX上使用。
实际上我前一段时间使用AutoHotkey为此做了一些事情,并想在这里也分享了它:Mouse Wheel Emulator
按住鼠标左键和右键,左右移动鼠标可模拟鼠标滚轮滚动。
您也可以通过同时单击鼠标左键和鼠标右键来模拟中间点击。
Windows 7的另一个解决方案,允许在所有应用程序中滚动,包括Internet Explorer:
scroll.ahk
桌面。scroll.ahk
。这将使在移动轨迹球时按住小右按钮垂直滚动。左小按钮是后退按钮。
如果到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
XButton2
到XButton1
我喜欢左边的按钮,并且加入了*
之前%esmb_TriggerKey%
在两线#Persistent
部分,所以他们开始Hotkey, *%esmb_TriggerKey%
。后者使它可以与修饰键完美配合,例如Ctrl + Scroll即可。