Trong Os X, tôi có thể giữ Shift trong khi sử dụng bánh xe cuộn trên chuột để cuộn theo chiều ngang thay vì theo chiều dọc. Có cách nào để làm một cái gì đó tương tự trong Windows?
Trong Os X, tôi có thể giữ Shift trong khi sử dụng bánh xe cuộn trên chuột để cuộn theo chiều ngang thay vì theo chiều dọc. Có cách nào để làm một cái gì đó tương tự trong Windows?
Câu trả lời:
Bạn có thể mô phỏng nó với AutoHotKey
Nếu tôi tìm thấy tập lệnh tôi sẽ cho bạn biết: Từ những bài đăng này:
Bạn nên tìm một số kịch bản
#Persistent mhook := > DllCall("SetWindowsHookEx", "int", 14 > ; WH_MOUSE_LL
, "uint", RegisterCallback("WheelHorzHook"), > "uint", 0, "uint", 0) return
WheelLeft:
MsgBox WheelLeft return
WheelRight:
MsgBox WheelRight return
WheelHorzHook(nCode, wParam, lParam) {
global mhook
Critical
if (wParam = 0x020E) ; WM_MOUSEHWHEEL (Vista-only)
{
if (delta := NumGet(lParam+0,10,"Short"))
{
if (delta<0) {
SetTimer, WheelLeft, -1
return true
} else {
SetTimer, WheelRight, -1
return true
}
}
}
return DllCall("CallNextHookEx", "uint", mhook, "int", nCode, "uint",
wParam, "uint", lParam) }
Đây là tập lệnh AutoHotKey để thực hiện bằng cách sử dụng lệnh shift và (có lẽ là) lệnh cuộn bánh xe chuột nguyên gốc:
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
Điều này được lấy trực tiếp từ https://gist.github.com/cheeaun/160999 .
Hãy nhớ rằng rất nhiều ứng dụng, bao gồm cả các ứng dụng của Microsoft, không hỗ trợ cuộn chuột ngang. (Tôi tin rằng tính năng này chỉ được giới thiệu trong Windows Vista.)
Từ http://www.autohotkey.com/docs/Hotkeys.htm
Một số phím nóng hữu ích nhất cho bánh xe chuột liên quan đến các chế độ cuộn xen kẽ văn bản của cửa sổ. Ví dụ: cặp phím nóng sau đây cuộn theo chiều ngang thay vì theo chiều dọc khi bạn xoay bánh xe trong khi giữ phím Điều khiển bên trái:
~LControl & WheelUp:: ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 2 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 0, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINELEFT.
return
~LControl & WheelDown:: ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 2 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 1, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINERIGHT.
return
Có một cách để làm điều này trong các cửa sổ với chuột phải. Tôi có một con chuột với một bánh xe cuộn có nút chạy bên trái / chạy bên phải được tích hợp bên phải. Chỉ cần đẩy bánh xe cuộn sang trái hoặc phải sẽ di chuyển nội dung theo hướng mong muốn. Tôi có Logitech VX và tôi đã rất hài lòng với nó.
VX cũng cho phép bạn định cấu hình các nút khác nhau cho mỗi ứng dụng nếu bạn quá nghiêng. Mức độ tùy biến này là rất tốt đẹp để có!
Trong một số chương trình Windows, dịch chuyển không cuộn theo chiều ngang (ví dụ: Windows Explorer).
Trong các chương trình khác như Internet Explorer, Firefox và Excel nhấn giữ nút cuộn và di chuyển từ trái sang phải sẽ cuộn theo chiều ngang.
Đây là một giải pháp hacky cho Word (chỉ) yêu cầu cả macro AutoHotKey và Word. Nó chỉ hoạt động trên chế độ xem tài liệu chính trong Word (đủ tốt cho tôi).
Đầu tiên, sử dụng AutoHotKey để gửi tổ hợp phím tùy chỉnh tới Word để phản hồi lại hành động của chuột. Tôi đang sử dụng Alt-M RightArrow và Alt-M LeftArrow. (Tôi cũng có ánh xạ cho các sự kiện WheelLeft và WheelRight bên dưới vì chuột của tôi gửi chúng tốt; tôi chỉ cần Word để làm điều gì đó hữu ích với chúng.)
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
Thiết lập các ràng buộc phím Word (bạn có thể sử dụng hộp thoại tùy chỉnh bàn phím để thực hiện việc này):
' Alt-Shift-M Right (keycode 39)
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyM, wdKeyShift, wdKeyAlt), _
KeyCode2:=BuildKeyCode(39), _
KeyCategory:=wdKeyCategoryMacro, Command:="Normal.NewMacros.ScrollRight"
' Alt-Shift-M Left (keycode 37)
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyM, wdKeyShift, wdKeyAlt), _
KeyCode2:=BuildKeyCode(37), _
KeyCategory:=wdKeyCategoryMacro, Command:="Normal.NewMacros.ScrollLeft"
Cuối cùng, xác định các macro Word trong mẫu Bình thường của bạn (hoặc điều chỉnh các tham chiếu đến chúng ở trên):
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
Sau khi tìm kiếm xung quanh, cuối cùng cũng tìm thấy một cách (sử dụng AutoHotKey ) hoạt động trong Excel và mọi nơi khác, mà không rõ ràng phá vỡ bất cứ điều gì (được điều chỉnh từ một vài giải pháp khác nhau trên các diễn đàn AutoHotKey, mặc dù tôi không ghi lại các nguồn nên không thể cung cấp tín dụng thích hợp xin lỗi).
MS Excel dường như có một số cách xử lý giao diện người dùng kỳ lạ (mặc dù bằng cách nào đó, sau nhiều năm nhìn thấy những gì các nhà phát triển MS Office đã cho chúng tôi, tôi không ngạc nhiên lắm). Kịch bản này dường như hoạt động khá nhiều ở mọi nơi trừ MS Word - nếu có ai có thể giải quyết điều đó, thì hãy cho tôi biết! Có lẽ một cái gì đó giống như tìm ra lớp cửa sổ cho Word và mã hóa cho nó cụ thể như đã được thực hiện với Excel (chỉ với một tập hợp các ràng buộc chính khác).
#Singleinstance Force
#IfWinActive ahk_class XLMAIN
+WheelUp::
SetScrollLockState, On
SendInput {Left}
SetScrollLockState, Off
Return
+WheelDown::
SetScrollLockState, On
SendInput {Right}
SetScrollLockState, Off
Return
; Everything except Excel.
#IfWinNotActive ahk_class XLMAIN
+WheelUp:: ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 4 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 0, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINELEFT.
return
+WheelDown:: ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 4 ; <-- Increase this value to scroll faster.
SendMessage, 0x114, 1, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINERIGHT.
return
#IfWinActive
Từ giải pháp Sam, tôi đã phát triển giải pháp của riêng mình với tốc độ cuộn có thể định cấu hình:
https://gist.github.com/envil/d21a24744b68fda626b4444784f71c32
; Shift + Wheel for horizontal scrolling
+WheelUp::
; Scroll to the left
MouseGetPos,,,id, fcontrol,1
Loop 8 ; <-- Increase for faster scrolling
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id% ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINERIGHT.
return
+WheelDown::
;Scroll to the right
MouseGetPos,,,id, fcontrol,1
Loop 8 ; <-- Increase for faster scrolling
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id% ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINELEFT.
return