Yanıtlar:
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.
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.
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.
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.
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 config
bunu 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.
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:
Open Config
Aşağıdaki lua
betiğ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()