Tôi có thể bật cuộn bằng kéo nút giữa trong OS X không?


14

Tôi có một con chuột với ba nút nhưng không có bánh xe.

Trong OS X, có cách nào (có lẽ với phần mềm addon) cho phép tôi sử dụng nút thứ ba để cuộn bằng cách giữ và di chuyển chuột không?

Câu trả lời:


9

Smart Scroll thực hiện những gì bạn đang tìm kiếm, với tính năng 'Grab Scroll'. Gán nó vào 'Nút 3 (Giữa)' và kéo trên cả hai trục sẽ hoạt động trong các ứng dụng như trình duyệt (Chrome), Terminal, Adobe Photoshop và Finder - không có ứng dụng nào tôi từng thử làm việc với nó (sử dụng 4.0 betas lên và lên). Nó có một thử nghiệm miễn phí.

nhập mô tả hình ảnh ở đây


1

Nó phụ thuộc vào phần mềm - ví dụ: Firefox hỗ trợ phần mềm, trong khi Google Chrome thì không.

Hiện tại, không có phần mềm để kích hoạt tính năng toàn hệ thống như vậy trong OS X, thật đáng buồn.


Có thể nó không tương thích với Chrome từ năm 2011, nhưng chắc chắn vào năm 2014 sau một vài lần sửa đổi, 'Scroll Scroll' của Smart Scroll hoạt động trơn tru với Chrome và Opera, tôi có thể xác nhận. Tôi nghĩ rằng nó cũng rộng trên hệ điều hành vì nó hoạt động trong Finder, Adobe Photoshop và thậm chí cả Terminal. Vì vậy, tôi nghĩ rằng dữ liệu của bạn đã hết hạn! :)

1

Smooze làm điều đó, trong số những thứ khác. (Tôi là nhà phát triển)

Điều khác biệt với các đề xuất khác là khả năng sử dụng nó trong mọi ứng dụng mac trong khi vẫn xác định các liên kết chẳng hạn. (trong trường hợp bạn sử dụng kéo nút giữa để lấy và ném nhưng vẫn muốn rằng nhấp vào nút giữa sẽ hoạt động như nút giữa)

Với Smooze giống như lấy-kéo-ném hơn là kéo-kéo. Bản phát hành ảnh hưởng đến động lượng và hình ảnh động của cuộn, tương tự như cuộn iPhone.

nhập mô tả hình ảnh ở đây


1

Có một ứng dụng mã nguồn mở rất hay tên là Karabiner sẽ thực hiện điều này và còn hơn thế nữa (Bàn phím và chuột ánh xạ, v.v.). Xem câu hỏi này cho một số ví dụ. Ngoài ra, đối với một số nhà sản xuất nhất định, họ cung cấp phần mềm điều khiển tùy chỉnh có thể cho phép cải thiện / sửa đổi chức năng (ví dụ: Trung tâm điều khiển Logitech).

Như đã đề cập trong các bình luận bên dưới, trong khi phiên bản mới của 'Karabiner Elements' đã được phát hành cho MacOS Sierra (10.12) trở đi, nó chỉ cung cấp cho việc ánh xạ lại dựa trên bàn phím cho đến nay - vì vậy hiện tại việc ánh xạ chuột không thể thực hiện được.

Tuy nhiên, Hammerspoon là một công cụ mã nguồn mở miễn phí khác có thể được sử dụng, trong số nhiều thứ khác, để ánh xạ lại các phím trên chuột (và / hoặc bàn phím) cho các chức năng khác nhau. Bạn sẽ cần cài đặt công cụ và cung cấp cho nó một số cấu hình phù hợp - xem các ví dụ ở đây để ánh xạ lại chuột.

Để kiểm tra loại sự kiện và mouseEventButtonNumbers nào đang được thiết bị của bạn tạo ra, bạn có thể chạy nó (chỉ cần sao chép / dán 4 dòng vào bảng điều khiển) trong bảng điều khiển Hammerspoon (Sử dụng reload configđể dừng nó):

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

Lưu ý: Nếu bạn đã cài đặt các công cụ Trung tâm điều khiển Logitech (LCC) - nó sẽ lấy các sự kiện trực tiếp từ các thiết bị Logitech bằng mô-đun hạt nhân đã cài đặt của chúng để Hammerspoon không thể nhìn thấy chúng. Bạn sẽ cần gỡ cài đặt LCC nếu bạn muốn ánh xạ lại các nút chuột bằng Hammerspoon.


1
Thật không may, Karabiner không còn hoạt động với OSX hiện đại. Hiện tại có một "Yếu tố Karabiner", nhưng nó có một nửa chức năng của bản gốc và đây là một trong những điều không thể làm được.
Nathan Hornby

1
Có, hiện tại nó bị giới hạn nên tôi đã cập nhật câu trả lời của mình để thêm giải pháp khác.
pierz

Hammerspoon là giải pháp tôi đã hạ cánh ngày hôm qua, rất tốt! :) Vì một số lý do, tôi không thể khiến nó liên kết với một trong các nút chuột, nhưng ánh xạ nó tới ctrl + cmd dường như hoạt động tốt.
Nathan Hornby

1
Tôi đã thêm một chỉnh sửa khác khi tôi gặp sự cố này khi cài đặt LCC nhưng gỡ cài đặt nó đã sửa nó (một khi tôi đã làm việc với nút nào tạo ra chuộtEventButtonNumber - trên nút Chuột trái của tôi là 3 và nút bên phải là 4) .
pierz

Tôi nghi ngờ đó có thể là vấn đề! Cảm ơn bạn đã xác nhận, tôi sẽ sắp xếp nó khi tôi có cơ hội.
Nathan Hornby

1

Tôi đã làm điều đó với Hammerspoon với kịch bản cấu hình sau được lấy cảm hứng từ chủ đề này: https://github.com/tekezo/Karabiner/issues/814#issuecomment-337643019

Các bước:

  • Cài đặt Hammerspoon
  • Nhấp vào biểu tượng menu của nó và chọn Open Config
  • Dán đoạn luascript sau vào cấu hình:

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

chỉ cần thử nó và nó hoạt động rất đẹp.
im_chc

vì tôi thích làm cho cuộn Y theo cách khác, tôi đã thay đổi mã lua một chút: thay đổi "dy" trong dòng "local scroll = hs.eventtap.event.newScrollEvent ({- dx * scrollmult, dy * scrollmult}, {}, 'pixel') "thành âm (vì vậy nó sẽ là" -dy * scrollmult ")
im_chc

0

Tôi đã sử dụng Công cụ cảm ứng tốt hơn để gán Ctrl + nhấp chuột giữa vào PGUp và Tùy chọn + Nhấp chuột giữa vào PGDown. Đó là phần mềm miễn phí, tuyệt vời và hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.