Posso ativar a rolagem arrastando o botão do meio no OS X?

14

Eu tenho um mouse com três botões, mas sem roda.

No OS X, existe alguma maneira (talvez com o software addon) que me permita usar meu terceiro botão para rolagem, segurando-o e movendo o mouse?

    
por kdt 28.06.2011 / 16:31

6 respostas

9

Smart Scroll faz o que procura, com a funcionalidade 'Agarrar Pergaminho'. Atribua-o ao 'Button 3 (Middle)' e arrastando em ambos os eixos funcionará em aplicativos como navegadores (Chrome), Terminal, Adobe Photoshop e Finder - nenhum aplicativo que eu tentei não funcionou com ele (usando o 4.0 betas para cima e para cima). Tem um teste gratuito.

    
por 22.08.2011 / 03:54
1

Depende do software - por exemplo, o Firefox o suporta, enquanto o Google Chrome não.

Atualmente, não há software para ativar esse recurso em todo o sistema no OS X, infelizmente.

    
por 28.06.2011 / 16:36
1

Smooze faz isso, entre outras coisas. (Eu sou o desenvolvedor)

O que o diferencia de outras sugestões é a capacidade de usá-lo em todos os aplicativos do mac enquanto ainda identifica links, por exemplo. (no caso de você usar o botão do meio para arrastar e arremessar, mas ainda assim quiser que um clique no botão do meio atue como um botão do meio)

Com o Smooze é mais parecido com o arrastar e arrastar do que com o arrastar. O lançamento afeta o momento e a animação do pergaminho, semelhante ao rolagem do iPhone.

    
por 29.06.2017 / 11:05
1

Existe um aplicativo de código aberto muito bom chamado Mosquetão que fará isso e muito mais (remapeamento de teclado e mouse, etc). Veja esta pergunta para alguns exemplos. Além disso, para alguns fabricantes, eles fornecem software de controle personalizado que pode permitir uma funcionalidade melhorada / modificada (por exemplo, o Logitech Control Center).

Como mencionado nos comentários abaixo, enquanto uma nova versão do 'Karabiner Elements' foi lançada para o MacOS Sierra (10.12) em diante, ele somente fornece remapeamento baseado em teclado até o momento - então atualmente o remapeamento do mouse não pode ser feito com ele .

No entanto, Hammerspoon é outra ferramenta gratuita de código aberto que pode ser usada, entre muitas outras coisas, para remapear as teclas do mouse ( e / ou teclado) para diferentes funções. Você precisará instalar a ferramenta e fornecê-la com alguma configuração apropriada - veja os exemplos aqui para o remapeamento do mouse. / p>

Para verificar quais tipos de evento e mouseEventButtonNumbers estão sendo gerados pelo seu dispositivo, você pode rodar isto (apenas copie / cole as 4 linhas no console) no console Hammerspoon (Use reload config para pará-lo):

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

Nota: Se você instalou as ferramentas do Logitech Control Center (LCC), ele captura os eventos diretamente dos dispositivos da Logitech usando o módulo do kernel instalado, para que a Hammerspoon não possa vê-los. Você precisará desinstalar o LCC se quiser remapear os botões do mouse usando o Hammerspoon.

    
por 06.12.2016 / 19:25
0

Eu usei Ferramenta Better Touch para atribuir Ctrl + clique do meio para o PgUp, e Option + Middle-click para o PgDown. É grátis, excelente software e funciona bem.

    
por 02.08.2012 / 19:31
0

Eu fiz isso com Hammerspoon com o seguinte script de configuração inspirado neste tópico: link

Etapas:

  • Instalar o Hammerspoon
  • Clique no ícone do menu e selecione Open Config
  • Cole o seguinte script lua na configuração:

    -- 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()
    
por 23.08.2018 / 14:07