средство от трекбола без колеса прокрутки?


30

Я подумываю купить трекбол, и мой вариант - мраморный трек Logitech. Но потом я обнаружил, что колеса прокрутки нет. Как вы справляетесь с этим? Я определенно хочу купить трекбол с колесом прокрутки? Я много пользуюсь фейсбуком.

Я не хочу нажимать указательным и средним пальцами, поэтому некоторые трекбольные мыши мне не подойдут, например, Trackman Wheel.


Попробуйте Trackman Wheel от Logitech. Предложение проводной или беспроводной модели.
Моав

Я не хочу нажимать указательным и средним пальцами, поэтому я хочу трекбол с мячом в центре. Спасибо.
lamwaiman1988

Обычно вы можете настроить подобные вещи с помощью программного обеспечения для мыши. Оттуда вы можете делать разные вещи (удерживая нажатой правую кнопку при перемещении трекбола и т. Д.). Я предполагаю, что вы, вероятно, уже исправили свою проблему, потому что вы опубликовали это год назад . Если нет, удачи тебе.
HelpingHand

@HelpingHand Нет, я все еще не мог найти жизнеспособное решение. Теперь я использую PageUp и PageDown для прокрутки.
lamwaiman1988

Ответы:


13

Если вы работаете в Windows, я бы предложил попробовать AutoHotKey, другие пользователи уже использовали прокрутку с помощью Marble Mouse (я использовал скрипт внизу):

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

Решение Logitech, которое поставляется с их драйверами, странно: вы нажимаете один раз, чтобы включить 4-стороннюю прокрутку, и еще раз, чтобы отключить ее. Вы не можете держать и прокручивать то, что я был после. Я закончил удаление их программного обеспечения.


Это решение работает, но поддерживает только маленькую левую кнопку на трекболе, поэтому оно отключает функцию «назад» по умолчанию для веб-страницы. В любом случае, я могу принять этот ответ, попробовав его в течение нескольких дней.
lamwaiman1988

ПРИМЕЧАНИЕ. Скрипт AHK работает только для трекболов с X-кнопками или для 4+ кнопочных трекболов.
Майкл Паукуонис

Очень просто обновить скрипт, чтобы использовать другую кнопку. Над назначением переменной вверху есть комментарий - замените «XButton1» на другое значение, чтобы использовать эту кнопку вместо этого. В файле справки AHK есть список специальных клавиш (просто запустите AHK из меню «Пуск») в «Списке клавиш, кнопок мыши и элементов управления джойстика», где вы можете выбрать любую клавишу / кнопку, чтобы действовать в качестве модификатора.
Джеймс Б.

9

У меня тот же трекбол, и решение очень элегантное: когда вы нажимаете на выбранную кнопку, сам шар становится колесом прокрутки. Я выбрал большую правую кнопку, которую нажимаю мизинцем.

Это очень удобно, и это займет всего несколько дней, чтобы привыкнуть.

Вы быстро поймете, что любое колесо прокрутки (на мышке или трекболе) является чем-то непригодным. Поверь мне, оно того стоит ;-)

Преимущества:

  • 2D прокрутка вместо 1D
  • более быстрая и точная прокрутка, чем у колеса
  • удобнее для длинной прокрутки (благодаря инерции мяча). Идеально подходит для вашего примера Facebook.

Я не могу жить без этого больше.

Настроить это под любой ОС Linux не сложно. Требуется только создать файл /etc/X11/xorg.conf (см. Мою конфигурацию здесь: настройка трекбола под Linux без редактирования Xorg.conf )

Более подробную информацию можно найти здесь: https://help.ubuntu.com/community/Logitech_Marblemouse_USB

В Windows у меня нет опыта, но я думаю, что инструмент настройки поставляется с трекболом.


2
Моя рабочая среда - это, в основном, окна, так что это нереальный вариант для меня, и я понятия не имею, как перенести это в windows
lamwaiman1988

8

Вы можете попробовать колесо прокрутки мыши Marble Mouse, разработанное специально для этой мыши:

Колесо прокрутки Marble Mouse, или просто Marble Scroll, представляет собой небольшую программу, разработанную для имитации колеса прокрутки на любом трекболе или мыши без такового. Он был специально разработан для мыши Logitech Marble, но может работать с любой стандартной мышью или трекболом. Он предназначен для Windows 2000 и выше.

Мраморная прокрутка является заменой функций автопрокрутки и универсальной прокрутки Logitech; ни должным образом не имитировать настоящее колесо прокрутки и оба имеют ограничения и недостатки.

Marble Scroll работает с любой мышью или трекболом и не требует установки драйверов Logitech SetPoint или MouseWare.

особенности

  • Добавить колесо прокрутки для любой мыши с более чем двумя кнопками
  • Совместимость с большинством приложений, которые поддерживают колесо прокрутки (для любого типа ввода)
  • Регулируемое ускорение
  • Регулируемое расстояние прокрутки (за «шаг» - см. Ниже)
  • Ступенчатая прокрутка для симуляции реального колеса мыши
  • Быстрое переключение режимов влево / вправо
  • Быстрое включение / отключение, нажав на иконку в трее
  • Маленький и легкий на системных ресурсах

Сайт продукта в настоящее время не работает, но здесь есть копия текста сайта на Archive.org .

Ссылка для скачивания здесь .


На Windows 8 это работает хорошо.
Юстинас Дуденас

Это по-прежнему прекрасно работает на Win7 и 8. Удерживание кнопки назад на моей мыши позволяет мне прокручивать трекбол. Тем не менее, я все еще могу использовать кнопку «Назад» в качестве кнопки «Назад». В основном это добавило функциональности, ничего не убирая. Лучший вид решения.
японская зона

1
Кажется, не работает надежно на Windows 10 :(
askvictor

1
Связанное зеркало загрузки показывается как вредоносное ПО - не уверен, что это ложное срабатывание, но пока не изменяет его.
Джеймс Б.

1
Я использовал его годами, и он отлично работает до Windows 8, в которой он стал ненадежным. Я не пробовал это в Win 10. Я написал по электронной почте автору оригинала, который ответил (!) И, хотя он потерял исходный код, рассказал мне основную суть того, как это сделать. Суть, которую он дал мне, - это то, что сделал этот другой ответ: superuser.com/a/782571/127024
Иоганн

8

Существует простая 100-строчная альтернатива C ++, которая очень похожа на решения AutoHotKey, то есть

  • отправка событий вертикального / горизонтального колеса прокрутки путем перемещения трекбола, удерживая одну из кнопок X и
  • средний щелчок при нажатии и отпускании кнопки X без перемещения трекбола.

https://github.com/Seelge/TrackballScroll

Изменить: более новые версии предоставляют значок systray, работают в Windows 10 и основаны на C #.


Это решение превосходит любой из сценариев AutoHotKey, которые я пробовал, и все они страдают от назойливого «колебания курсора» из-за события, управляемого временем, которое «перемещает мышь обратно в исходное положение» каждые много миллисекунд, пока прокрутки. Этот простой исполняемый файл TrackballScroll не имеет таких ограничений и работает очень хорошо. Единственное предостережение в том, что оно не работает надежно в Windows 10 Creator Update, на момент написания статьи: github.com/Seelge/TrackballScroll/issues/14
Бен Джонсон,

Я использовал это в течение многих лет, и мне это понравилось (я даже +1 добавил этот ответ более года назад), но после перехода на Windows 10 на прошлой неделе я хотел бы отметить, что ошибка, упомянутая в другом комментарии, все еще не ' Это исправлено, и ненадежность сделала его совершенно непригодным для меня на практике.
mtraceur

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

Если вы предпочитаете использовать правую кнопку мыши, замените «XButton1» на «RButton».
Мэтт Вэлк,

Это работает почти идеально для меня, но есть ли способ сделать прокрутку более плавной? Я попробовал оба метода SendMessage и WheelUp / Down для вертикальной прокрутки, и они оба делают «прыжок»
askvictor

3

Жаль, что Logitech не реализовал симуляцию колеса прокрутки. Их драйвер обещает особую функцию, но она работает не для всех приложений, что делает его совершенно бесполезным. Они были так близки к созданию идеальной мыши! : s

Единственный обходной путь, который я нашел, - это использовать для этого скрипт AutoHotkey . С его помощью вы можете сделать крошечные кнопки влево / вправо прокручивать вверх и вниз. Он отлично работает, но его сложно настроить: вам нужно сначала изучить основы AutoHotkey. Если вы решите сделать это, вот мой скрипт AutoHotkey. Это адаптация оригинального сценария Джербо . Один щелчок начнет прокрутку в обычном темпе, но двойной или тройной щелчок начнет прокрутку быстрее.

; 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

Я мог бы также нажать клавишу PageUp / PageUp напрямую ...
lamwaiman1988

2

Я только что получил мышь Logitech Marble, а также возникла проблема с прокруткой. Поэтому я сделал этот скрипт на AutoHotKey. Левая кнопка X позволяет выполнять прокрутку, а это означает, что, нажимая вниз, вы можете прокручивать мяч вертикально и горизонтально, а также перемещаться вперед и назад в браузере с помощью левой и правой кнопок. Правая кнопка X имеет то же действие, что и средняя кнопка.

Я на 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

Есть такие мраморные мыши (мыши), у которых есть колесо прокрутки. В противном случае, похоже, что приложение или какой-либо скрипт потребуется для мыши без колесика, а также использование одной из кнопок для включения функции прокрутки (которую вы отметили в комментарии к другому ответу, как неприемлемое решение).

Так "Зачем изобретать велосипед?" хорошая пословица в этом случае.

В этих примерах элемент физически установлен, и есть много типов на выбор. Ниже приведены два примера и стили.

WH1

Или как то так: Adesso

WH2


1

Два нетрадиционных варианта

  • Используйте трекпад Apple Magic в дополнение к трекболу. (Это мое текущее решение) http://www.apple.com/magictrackpad/

  • Купите контроллер leapmotion и используйте его в дополнение к трекболу. Помашите рукой перед устройством, чтобы прокрутить вверх и вниз. https://www.leapmotion.com/product

введите описание изображения здесь

Изображение предоставлено http://www5.pcmag.com/media/images/393268-leap-motion-controller.jpg


1

Простое (и, скажем, эргономичное решение) решение состоит в том, чтобы поместить функцию прокрутки на левую руку.

Этого можно достичь, используя мышь левой рукой / используя клавиатуру со встроенным колесом прокрутки на левом краю / назначая функции прокрутки клавишам программируемой клавиатуры с помощью программы, такой как Mkey ( http: // www.seriosoft.org/en/index.php ).

Почему я думаю, что это более эргономично - потому что этот подход распределяет напряжение более равномерно на обе руки. (Подробнее об этом: http://capsoff.org/checklist ).


1

Я использую Windows7 и использую оптический трекбол Kensington Orbit без прокрутки - это трекбол с двумя кнопками, без кнопок X, требуемых большинством сценариев AHK и приложений, на которые указывают другие.

Тем не менее, MouseImp работает для меня на Windows7. Это настраивается, но я настроил его, right-click + rollчтобы получить экран прокрутки. Это больше похоже на перетаскивание, поэтому указатель перемещается, и вы получаете только один экран за раз [обновление: скорость прокрутки настраивается, поэтому она может быть больше, чем «одна страница»].

В то же время, 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. Выберите Run Script .
  5. Подтвердите, если будет предложено.

Это позволит удерживать небольшую правую кнопку прокрутки вертикально при перемещении трекбола. Маленькая левая кнопка - это кнопка назад.


В случае, если ссылка на код Эрика Элмора исчезнет, ​​вот она:

;;
;; 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 работает.
Синкоденада

0

Другой пользователь Trackman Marble здесь.

Я использую X-Mouse Control для эмуляции прокрутки. Эта реализация функции там не идеальна (пока?), Но она намного удобнее, чем реализация Logitech в их собственном программном обеспечении SetPoint ™.

Я рекомендую XMBC всем, кто не хочет связываться с AutoHotKey и ищет что-то, что просто работает.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.