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

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

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

18 ответов

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

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

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

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

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

https://github.com/Seelge/TrackballScroll

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Характеристики

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

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

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

Вот скрипт 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

Жаль, что 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

Еще одно решение для 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

Я только что получил мышь 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

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

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

В то же время, TrackballWorks Кенсингтона был настроен, чтобы дать мне прокрутку вниз на left-click + right-click, К сожалению, он не может прокрутить страницу вверх за раз (одну или другую).

Это не плагин продукта - это то, что я нашел для работы с этой моделью / типом трекбола.

Предостережение: вы постоянно нажимаете правую и левую кнопку, и это может привести к путанице, и ссылки будут /js активированы, когда вы просто захотите прекратить прокрутку.:::вздох:::

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

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

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

В зависимости от вашей ОС, вы можете настроить одну из кнопок для включения прокрутки, перемещая указатель при удерживании. Например, следующий скрипт включает это на кнопке 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

Я только что получил беспроводной трекбол на орбите от Кенсингтона, это удивительно. У вас есть мяч, у вас есть обе кнопки на каждой стороне, и у вас есть своего рода круг вне трекбола, который позволяет прокручивать страницу вверх или вниз. Это действительно работает, и я использую на Windows и Mac OSX.

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

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

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

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

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

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

WH1

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

WH2

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

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

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

введите описание здесь

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

Я на самом деле сделал что-то для этого, используя AutoHotkey, и решил, что поделюсь этим и здесь: Mouse Wheel Emulator

Это имитирует прокрутку колесика мыши, перемещая мышь, удерживая левую и правую кнопки мыши.

Вы также можете эмулировать средний щелчок, одновременно нажимая левую и правую кнопки мыши.

(Тем не менее) другое решение — использовать эту простую программу под названием MarbleScroll для Logitech Trackman Marble.

Немного подробностей о MarbleScroll:

  • работает в Windows XP, Vista, 7, 8, 8.1, 10,…
  • сборка для .NET framework 4.5, но она должна скомпилироваться на любой другой, если вы выберете ее в исходном коде проекта.
  • скомпилировано для мыши-правши, но работает и для левшей.
  • запускается в системном трее, где вы можете закрыть его, если вам нужно
  • вертикальная и горизонтальная прокрутка с помощью кнопки «Назад» + мраморное движение
  • Кнопка «Назад» без движения мрамора обеспечивает нормальную работу спины.
  • прокручивает окна под указателем мыши, не фокусируя его

Автор даже поделился исходным кодом , а также проектом Visual Studio .

Обратите внимание, что он совместим с SetPoint.

Я только что купил трекбол Kensington Orbit, у которого всего 2 кнопки и один шарик без кольца прокрутки. https://www.kensington.com/en-ca/p/products/ergonomics/ergonomic-input-devices/orbit-optical-trackball-1/ .

Я нашел этот скрипт autohotkey, который отлично работает на ПК с Windows 10.

Вот ссылка. https://github.com/mmikeww/DragToScroll . Небольшая настройка, которую вам, возможно, придется сделать, — это увеличить значение «MovementCheckDelay». Вам также может потребоваться запустить этот скрипт от имени администратора, иначе он не будет работать с приложениями, запущенными от имени администратора.

Я попробовал большинство методов, упомянутых в этой теме. DragToScroll является наиболее эффективным.

Форма этого трекбола великолепна, угол наклона более удобный по сравнению с дорогими трекболами.

Другие вопросы по тегам