OS X'te orta tuşla sürükleyerek kaydırmayı etkinleştirebilir miyim?


14

Üç düğmeli, tekerleği olmayan bir farem var.

OS X'te, üçüncü düğmemi basılı tutarak ve fareyi hareket ettirerek kaydırmak için kullanmamı sağlayacak herhangi bir yöntem var (belki de addon yazılımıyla)?

Yanıtlar:


9

Smart Scroll , 'Grab Scroll' özelliği ile aradığınızı yapar. 'Düğme 3'e (Orta) atayın ve her iki eksene sürüklemek tarayıcılar (Chrome), Terminal, Adobe Photoshop ve Finder gibi uygulamalarda çalışacaktır - denedim hiçbir uygulama onunla çalışmadı (4.0'ı kullanarak betalar yukarı ve yukarı. Ücretsiz bir denemesi var.

görüntü tanımını buraya girin


1

Yazılıma bağlıdır - örneğin, Firefox desteklerken, Google Chrome desteklemez.

Şu anda ne yazık ki, OS X'de böyle bir özelliği sistem genelinde etkinleştirmek için bir yazılım yoktur.


Belki de 2011’de Chrome ile uyumlu değildi, ancak 2014’te şüphesiz birkaç revizyondan sonra, Smart Scroll’un Grab Scroll’u Chrome ve Opera ile sorunsuz bir şekilde çalıştığını onaylıyorum. Finder, Adobe Photoshop ve hatta Terminal'de çalıştığı için işletim sistemi genelinde olduğunu düşünüyorum. Bu yüzden verilerinizin güncel olmadığını düşünüyorum! :)

1

Ben kullanılan Daha Dokunma Aracı Ctrl + PgUp orta tıklayın atamak ve Seçenek + PgDown için orta tıklayın. Ücretsiz, mükemmel bir yazılım ve iyi çalışıyor.


1

Smooze bunu, diğer şeylerin yanı sıra yapar. (Ben geliştiriciyim)

Örneğin diğer önerilerden ayırt edici olanı, her mac uygulamasında kullanabilme yeteneğidir; (yakalamak ve atmak için ortadaki düğmeyi kullanmanız durumunda, ancak yine de ortadaki bir düğmenin orta düğme olarak işlev görmesini istiyorsanız)

Smooze ile kapmak-sürükle daha kapmak-sürükle-atmak gibidir. Bu sürüm, iPhone kaydırmaya benzer şekilde, kaydırmanın momentumunu ve animasyonunu etkiler.

görüntü tanımını buraya girin


1

Bunu ve daha fazlasını yapacak Karabiner adında çok güzel bir açık kaynak uygulaması var (Klavye ve fare yeniden açma vb.). Bazı örnekler için bu soruya bakınız . Ayrıca bazı üreticiler için geliştirilmiş / değiştirilmiş işlevsellik (örneğin Logitech Control Center) sağlayabilen özel kontrol yazılımı sunarlar.

Aşağıdaki yorumlarda belirtildiği gibi, MacOS Sierra (10.12) için 'Karabiner Elements' in yeni bir sürümü piyasaya sürülürken, yalnızca şimdiye kadar klavyeye dayalı yeniden kaplamayı sağlıyor - şu anda fare yeniden kaplaması yapılamıyor.

Ancak Hammerspoon , fare (ve / veya klavyedeki) tuşlarını farklı işlevlere yeniden ayarlamak için kullanılabilecek başka bir serbest kaynak aracıdır. Aracı kurmanız ve uygun bir konfigürasyon sağlamanız gerekir - fare yeniden kaplaması için buradaki örneklere bakın .

Hangi olay türlerinin ve mouseEventButtonNumbers öğesinin cihazınız tarafından oluşturulduğunu kontrol etmek için Hammerspoon konsolunda ( reload configbunu durdurmak için kullanın) bunu çalıştırabilirsiniz (4 satırı kopyalayıp konsola yapıştırın ):

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

Not: Logitech Kontrol Merkezi (LCC) araçlarını kurduysanız, kurulu çekirdeği modüllerini kullanarak olayları doğrudan Logitech cihazlarından alır, böylece Hammerspoon bunları göremez. Fare düğmelerini Hammerspoon kullanarak yeniden eşlemek istiyorsanız, LCC'yi kaldırmanız gerekir.


1
Maalesef, Karabiner artık modern OSX ile çalışmıyor. Şimdi yapan bir 'Karabiner Elemanlar' var, ancak orijinalin yarısı işlevselliğine sahip ve bu yapamayacağı şeylerden biri.
Nathan Hornby

1
Evet, şu anda sınırlı olduğundan, başka bir çözüm eklemek için cevabımı güncelledim.
Pierz

Hammerspoon dün indiğim çözüm, çok iyi bir öneri! :) Bir nedenden dolayı fare düğmelerinden birine bağlanmasını sağlayamadım, ancak ctrl + cmd ile eşleştirmek iyi sonuç verdi.
Nathan Hornby

1
LCC'yi kurduğumda bu sorunu yaşadığımdan başka bir düzenleme daha ekledim, ancak onu düzelttikten sonra düzeltdim (bir keresinde hangi mouseEventButtonNumber'ı oluşturduğuma karar verdim - Marble Mouse'umdaki soldaki mini düğme 3 ve sağ olan 4) .
Pierz

Sorun olabileceğinden şüpheleniyorum! Onay için teşekkürler, şansım olduğunda bunu çözeceğim.
Nathan Hornby

1

Hammerspoon ile bu konudan ilham alan aşağıdaki yapılandırma betiğini kullanarak yaptım : https://github.com/tekezo/Karabiner/issues/814#issuecomment-337643019

Adımlar:

  • Hammerspoon yükleyin
  • Menü simgesine tıklayın ve Open Config
  • Aşağıdaki luabetiği konfigürasyona yapıştırın :

    -- 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()
    

sadece denedim ve güzel çalışıyor.
im_chc

Y-kaydırmasını diğer yönde yuvarlak yapmayı tercih ettiğimden, lua kodunu biraz değiştirdim: yerel "=" satırını değiştirin yerel kaydırma = hs.eventtap.event.newScrollEvent ({- dx * scrollmult, dy * scrollmult}, {}, 'pixel') "eksi (yani" -dy * scrollmult "olur)
im_chc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.