ใน Os X ฉันสามารถกด Shift ค้างไว้ในขณะที่ใช้ล้อเลื่อนของเมาส์เพื่อเลื่อนในแนวนอนแทนที่จะเป็นแนวตั้ง มีวิธีทำสิ่งที่คล้ายกันใน Windows หรือไม่?
ใน Os X ฉันสามารถกด Shift ค้างไว้ในขณะที่ใช้ล้อเลื่อนของเมาส์เพื่อเลื่อนในแนวนอนแทนที่จะเป็นแนวตั้ง มีวิธีทำสิ่งที่คล้ายกันใน Windows หรือไม่?
คำตอบ:
คุณสามารถจำลองด้วยAutoHotKey
หากฉันพบสคริปต์ฉันจะแจ้งให้คุณทราบ: จากโพสต์เหล่านี้:
คุณควรพบสคริปต์บางอย่าง
#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) }
ต่อไปนี้เป็นสคริปต์ AutoHotKey ที่ต้องทำโดยใช้การเลื่อนและคำสั่งการเลื่อนล้อเลื่อนของเม้าส์ (สันนิษฐาน)
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
นี้ได้รับมาโดยตรงจากhttps://gist.github.com/cheeaun/160999
โปรดทราบว่าแอปพลิเคชันจำนวนมากรวมถึงแอปพลิเคชันของ Microsoft ไม่รองรับการเลื่อนล้อเลื่อนของเมาส์แนวนอน (ฉันเชื่อว่าคุณลักษณะนี้มีเฉพาะใน Windows Vista)
จากhttp://www.autohotkey.com/docs/Hotkeys.htm
ปุ่มลัดที่มีประโยชน์ที่สุดสำหรับล้อเลื่อนของเมาส์นั้นเกี่ยวข้องกับโหมดอื่นในการเลื่อนข้อความของหน้าต่าง ตัวอย่างเช่นปุ่มลัดคู่ต่อไปนี้เลื่อนตามแนวนอนแทนที่จะเป็นแนวตั้งเมื่อคุณหมุนวงล้อในขณะที่กดปุ่มควบคุมค้างไว้:
~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
มีวิธีการทำเช่นนี้ใน windows ด้วยเมาส์ขวา ฉันมีเมาส์ที่มีล้อเลื่อนที่มีปุ่มซ้าย / ขวาเขย่าเบา ๆ รวมอยู่ในนั้น เพียงแค่เลื่อนล้อเลื่อนไปทางซ้ายหรือขวาจะเป็นการย้ายเนื้อหาไปในทิศทางที่ต้องการ ฉันมี Logitech VX และฉันมีความสุขมากกับมัน
VX ยังช่วยให้คุณสามารถกำหนดค่าปุ่มต่างกันสำหรับทุกแอปพลิเคชันเดียวหากคุณมีความโน้มเอียง การปรับแต่งในระดับนี้ดีมากที่มี!
ในบางโปรแกรมของ Windows การเลื่อนจะเลื่อนในแนวนอน (เช่น Windows Explorer)
ในโปรแกรมอื่นเช่น Internet Explorer, Firefox และ Excel การกดปุ่มล้อเลื่อนค้างไว้และการเลื่อนจากซ้ายไปขวาจะเป็นการเลื่อนในแนวนอน
ต่อไปนี้เป็นโซลูชันแฮ็กสำหรับ Word (เท่านั้น) ที่ต้องใช้ทั้งแมโคร AutoHotKey และ Word ใช้งานได้กับมุมมองเอกสารหลักใน Word (ซึ่งดีพอสำหรับฉัน)
ขั้นแรกใช้ AutoHotKey เพื่อส่งการกดแป้นพิมพ์ที่กำหนดเองไปยัง Word เพื่อตอบสนองต่อการกระทำของเมาส์ ฉันใช้ Alt-M RightArrow และ Alt-M LeftArrow (ฉันยังมีการแมปสำหรับกิจกรรม WheelLeft และ WheelRight ด้านล่างเพราะเมาส์ของฉันส่งได้ดีฉันต้องการ Word เพื่อทำสิ่งที่มีประโยชน์กับพวกเขา)
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
ตั้งค่าการเชื่อมโยงปุ่ม Word (หรือคุณอาจใช้กล่องโต้ตอบปรับแต่งคีย์บอร์ดเพื่อทำสิ่งนี้):
' 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"
ในที่สุดให้กำหนดมาโคร Word ในเทมเพลตปกติของคุณ (หรือปรับการอ้างอิงข้างต้น):
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
ไม่ใช่แป้นพิมพ์ลัดทุกประการ แต่คุณสามารถคลิกล้อเลื่อนของเมาส์ได้ตลอดเวลา สิ่งนี้จะแสดงไอคอน 4 ทิศทางในแอพพลิเคชั่นส่วนใหญ่ที่คุณสามารถใช้เพื่อเลื่อน
หลังจากที่มองไปรอบ ๆ ในที่สุดก็พบวิธี (ใช้AutoHotKey ) ที่ใช้งานได้ใน Excel และที่อื่น ๆ โดยไม่ทำลายอะไรเลย (ดัดแปลงจากโซลูชันที่แตกต่างกันสองสามอย่างในฟอรัม AutoHotKey แม้ว่าฉันจะไม่ได้บันทึกแหล่งที่มา เครดิตที่เหมาะสมขออภัย)
MS Excel ดูเหมือนจะมีวิธีแปลก ๆในการจัดการกับส่วนติดต่อผู้ใช้ (แต่อย่างใดหลังจากหลายปีที่ได้เห็นสิ่งที่นักพัฒนา MS Office มอบให้เราฉันไม่แปลกใจอย่างนั้น) ดูเหมือนว่าสคริปต์นี้จะทำงานได้ทุกที่ยกเว้น MS Word - หากใครสามารถแก้ไขได้โปรดแจ้งให้เราทราบ! มันอาจเป็นอะไรบางอย่างที่เหมือนกับการค้นหาคลาสหน้าต่างสำหรับ Word และการเขียนโค้ดสำหรับมันโดยเฉพาะเช่นทำกับ Excel (เพียงแค่มีการเชื่อมโยงคีย์ชุดอื่น)
#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
จากโซลูชันแซมฉันพัฒนาโซลูชันของตัวเองซึ่งมีความเร็วการเลื่อนที่กำหนดได้:
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