14

У меня есть мышь с тремя кнопками, но без колеса.

В OS X, есть ли способ (возможно, с дополнительным программным обеспечением), который позволил бы мне использовать третью кнопку для прокрутки, удерживая ее и перемещая мышь?

6 ответов6

9

Smart Scroll делает то, что вы ищете, с помощью функции «Grab Scroll». Присвойте его «Кнопке 3 (по центру)», и перетаскивание по обеим осям будет работать в таких приложениях, как браузеры (Chrome), Terminal, Adobe Photoshop и Finder - ни одно приложение, которое я пробовал, не работало с ним (с использованием 4.0 беты вверх и вверх). Это бесплатная пробная версия.

1

Smooze делает это, между прочим. (Я разработчик)

То, что отличает его от других предложений, это возможность использовать его в каждом приложении Mac, в то же время идентифицируя ссылки, например. (в случае, если вы используете перетаскивание средней кнопкой, чтобы захватить и бросить, но все же хотите, чтобы нажатие средней кнопки действовало как средняя кнопка)

С Smooze больше похоже на захват-перетаскивание, чем захват-перетаскивание. Релиз влияет на импульс и анимацию прокрутки, аналогично прокрутке iPhone.

1

Это зависит от программного обеспечения - например, Firefox поддерживает его, а Google Chrome - нет.

В настоящее время, к сожалению, в OS X нет программного обеспечения, позволяющего использовать такую функцию в масштабе всей системы.

1

Есть очень хорошее приложение с открытым исходным кодом под названием Karabiner, которое сделает это и многое другое (переназначение клавиатуры и мыши и т.д.). Посмотрите этот вопрос для некоторых примеров. Также для определенных производителей они поставляют программное обеспечение по индивидуальному заказу, которое может обеспечить улучшенную / модифицированную функциональность (например, Logitech Control Center).

Как упомянуто в комментариях ниже, хотя новая версия «Karabiner Elements» была выпущена для MacOS Sierra (10.12) и выше, на данный момент она предусматривает только переназначение на основе клавиатуры - поэтому в настоящее время переназначение мыши невозможно с ним.

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

Чтобы проверить, какие типы событий и mouseEventButtonNumbers генерируются вашим устройством, вы можете запустить это (просто скопируйте / вставьте 4 строки в консоль) в консоли Hammerspoon (используйте reload config чтобы остановить его):

hs.eventtap.new({"all"},function(e)
print(e,"mouseEventButtonNumber:",
e:getProperty(hs.eventtap.event.properties['mouseEventButtonNumber']))
end):start()

Примечание. Если вы установили инструменты Logitech Control Center (LCC) - он получает события непосредственно с устройств Logitech, используя установленный модуль ядра, поэтому Hammerspoon их не видит. Вам нужно будет удалить LCC, если вы хотите переназначить кнопки мыши с помощью Hammerspoon.

0

Я использовал Better Touch Tool, чтобы назначить Ctrl+ средний щелчок для PgUp, а Option+ Middle-click для PgDown. Это бесплатное, отличное программное обеспечение и работает хорошо.

0

Я сделал это с помощью Hammerspoon с помощью следующего скрипта настройки, вдохновленного этой веткой : https://github.com/tekezo/Karabiner/issues/814#issuecomment-337643019

шаги:

  • Установить молоток
  • Нажмите на значок своего меню и выберите « Open Config
  • Вставьте следующий скрипт lua в конфигурацию:

    -- HANDLE SCROLLING WITH MOUSE BUTTON PRESSED
    local scrollMouseButton = 2
    local deferred = false
    
    overrideOtherMouseDown = hs.eventtap.new({ hs.eventtap.event.types.otherMouseDown }, function(e)
        -- print("down")
        local pressedMouseButton = e:getProperty(hs.eventtap.event.properties['mouseEventButtonNumber'])
        if scrollMouseButton == pressedMouseButton 
            then 
                deferred = true
                return true
            end
    end)
    
    overrideOtherMouseUp = hs.eventtap.new({ hs.eventtap.event.types.otherMouseUp }, function(e)
        -- print("up")
        local pressedMouseButton = e:getProperty(hs.eventtap.event.properties['mouseEventButtonNumber'])
        if scrollMouseButton == pressedMouseButton 
            then 
                if (deferred) then
                    overrideOtherMouseDown:stop()
                    overrideOtherMouseUp:stop()
                    hs.eventtap.otherClick(e:location(), pressedMouseButton)
                    overrideOtherMouseDown:start()
                    overrideOtherMouseUp:start()
                    return true
                end
                return false
            end
            return false
    end)
    
    local oldmousepos = {}
    local scrollmult = -4   -- negative multiplier makes mouse work like traditional scrollwheel
    
    dragOtherToScroll = hs.eventtap.new({ hs.eventtap.event.types.otherMouseDragged }, function(e)
        local pressedMouseButton = e:getProperty(hs.eventtap.event.properties['mouseEventButtonNumber'])
        -- print ("pressed mouse " .. pressedMouseButton)
        if scrollMouseButton == pressedMouseButton 
            then 
                -- print("scroll");
                deferred = false
                oldmousepos = hs.mouse.getAbsolutePosition()    
                local dx = e:getProperty(hs.eventtap.event.properties['mouseEventDeltaX'])
                local dy = e:getProperty(hs.eventtap.event.properties['mouseEventDeltaY'])
                local scroll = hs.eventtap.event.newScrollEvent({-dx * scrollmult, dy * scrollmult},{},'pixel')
                -- put the mouse back
                hs.mouse.setAbsolutePosition(oldmousepos)
                return true, {scroll}
            else 
                return false, {}
            end 
    end)
    
    overrideOtherMouseDown:start()
    overrideOtherMouseUp:start()
    dragOtherToScroll:start()
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .