ওস এক্স-এ, আমি উল্টোর পরিবর্তে অনুভূমিকভাবে স্ক্রোল করতে মাউসের স্ক্রোল হুইলটি ব্যবহার করার সময় শিফটটি ধরে রাখতে পারি। উইন্ডোজে অনুরূপ কিছু করার কোনও উপায় আছে কি?
ওস এক্স-এ, আমি উল্টোর পরিবর্তে অনুভূমিকভাবে স্ক্রোল করতে মাউসের স্ক্রোল হুইলটি ব্যবহার করার সময় শিফটটি ধরে রাখতে পারি। উইন্ডোজে অনুরূপ কিছু করার কোনও উপায় আছে কি?
উত্তর:
আপনি এটি অটোহটকি দিয়ে অনুকরণ করতে পারেন
আমি যদি স্ক্রিপ্টটি খুঁজে পাই তবে আমি আপনাকে জানিয়ে দেব: এই পোস্টগুলি থেকে:
আপনার কিছু স্ক্রিপ্ট পাওয়া উচিত
#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) }
শিফট এবং (সম্ভবত) নেটিভ মাউস হুইল স্ক্রোল কমান্ড ব্যবহার করে এটি করার জন্য এখানে একটি অটোহটকি স্ক্রিপ্ট রয়েছে:
; Shift + Wheel for horizontal scrolling
+WheelDown::WheelRight
+WheelUp::WheelLeft
এটি সরাসরি https://gist.github.com/cheeaun/160999 থেকে নেওয়া হয়েছে ।
মনে রাখবেন যে মাইক্রোসফ্ট অ্যাপ্লিকেশন সহ প্রচুর অ্যাপ্লিকেশনগুলি অনুভূমিক মাউস হুইল স্ক্রোলিং সমর্থন করে না। (আমি বিশ্বাস করি বৈশিষ্ট্যটি কেবল উইন্ডোজ ভিস্তার মধ্যেই প্রবর্তিত হয়েছিল।)
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
ডান মাউস দিয়ে উইন্ডোতে এটি করার একটি উপায় রয়েছে। আমার কাছে একটি স্ক্রোল হুইল সহ একটি মাউস রয়েছে যাতে জগ বামে / জগ ডান বোতামটিতে ডানদিকে একত্রিত হয়। কেবল স্ক্রল চাকাটিকে বাম বা ডানদিকে চাপানো বিষয়বস্তুগুলিকে পছন্দসই দিকে নিয়ে যাবে। আমার লগিটেক ভিএক্স আছে এবং আমি এটিতে খুব খুশি হয়েছি।
আপনি যদি ঝোঁক থাকেন তবে ভিএক্স আপনাকে প্রতিটি একক অ্যাপ্লিকেশনের জন্য বোতামগুলি আলাদাভাবে কনফিগার করতে দেয়। এই স্তরের কাস্টমাইজেশনটি খুব সুন্দর!
কিছু উইন্ডোজ প্রোগ্রামে শিফ্টটি অনুভূমিকভাবে স্ক্রোল করে না (যেমন উইন্ডোজ এক্সপ্লোরার)।
ইন্টারনেট এক্সপ্লোরার, ফায়ারফক্স এবং এক্সেলের মতো অন্যান্য প্রোগ্রামগুলিতে স্ক্রোল হুইল বোতামটি ধরে রাখা এবং বাম থেকে ডানে সরে যাওয়া অনুভূমিকভাবে স্ক্রোল করবে।
এখানে ওয়ার্ডের হ্যাকি সমাধান রয়েছে (কেবলমাত্র) অটোহটকি এবং ওয়ার্ড ম্যাক্রোগ উভয়ই প্রয়োজন। এটি কেবল ওয়ার্ডে মূল দস্তাবেজ দর্শনে কাজ করে (যা আমার পক্ষে যথেষ্ট ভাল)।
প্রথমে মাউসের ক্রিয়াটির প্রতিক্রিয়া হিসাবে ওয়ার্ডে একটি কাস্টম কীস্ট্রোক প্রেরণ করতে অটোহটকি ব্যবহার করুন। আমি আল্ট-এম রাইটআরো এবং আল্ট-এম বামত্যাগ ব্যবহার করছি। (নীচে হুইল লেফট এবং হুইলরাইট ইভেন্টের জন্য ম্যাপিংও রয়েছে কারণ আমার মাউস এগুলি ঠিকঠাক পাঠায়; তাদের সাথে দরকারী কিছু করার জন্য আমার কেবল ওয়ার্ড প্রয়োজন))
#If WinActive("ahk_class OpusApp")
+WheelUp::SendInput !+M{Left}
WheelLeft::SendInput !+M{Left}
WheelRight::SendInput !+M{Right}
+WheelDown::SendInput !+M{Right}
#If
ওয়ার্ড কী বাইন্ডিংস সেট আপ করুন (আপনি এটি করতে বিকল্পভাবে কীবোর্ড কাস্টমাইজেশন ডায়ালগটি ব্যবহার করতে পারেন):
' 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"
প্রকৃতপক্ষে, আপনার সাধারণ টেমপ্লেটে ওয়ার্ড ম্যাক্রোগুলি সংজ্ঞায়িত করুন (বা উপরে তাদের উল্লেখগুলি সামঞ্জস্য করুন):
Sub ScrollRight()
ActiveWindow.SmallScroll ToRight:=1
End Sub
Sub ScrollLeft()
ActiveWindow.SmallScroll ToLeft:=1
End Sub
কিছুদূর ঘুরে দেখার পরে, অবশেষে এমন একটি উপায় ( অটোহটকি ব্যবহার করে ) সন্ধান করা গেল যা এক্সেল এবং অন্য যে কোনও জায়গায় কাজ করে, স্পষ্টতই কিছু না ভাঙিয়ে (অটোহটকি ফোরামে বিভিন্ন সমাধানের কয়েকটি থেকে অভিযোজিত, যদিও আমি উত্স রেকর্ড করি নি তাই দিতে পারি না উপযুক্ত ক্রেডিট দুঃখিত)।
এমএস এক্সেলের মনে হয় এটির ইউজার ইন্টারফেস পরিচালনা করার কিছু অদ্ভুত পদ্ধতি রয়েছে (যদিও এমএস অফিস বিকাশকারীরা আমাদের কী দিয়েছেন তা দেখার বহু বছর পরেও আমি এতে অবাক হই না)। এই স্ক্রিপ্টটি এমএস ওয়ার্ড ব্যতীত অন্য কোথাও বেশ কার্যকরভাবে কাজ করছে বলে মনে হচ্ছে - যদি কেউ এটি সমাধান করতে পারে তবে আমাকে জানান! এটি সম্ভবত ওয়ার্ডের জন্য উইন্ডো শ্রেণি সন্ধান করা এবং এর জন্য কোডিংয়ের মতো যা এক্সেলের সাথে সম্পন্ন হয়েছিল (ঠিক কী কী বাইন্ডিংগুলির একটি আলাদা সেট সহ)।
#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