題 覆蓋鼠標驅動程序以啟用左手按鈕佈局


我想做什麼(帖子的短片)

我想在驅動程序級別上切換鼠標左鍵和右鍵。

也就是說,我想修改或覆蓋鼠標驅動程序,以便在Windows操作系統上切換鼠標左鍵和右鍵。 (該解決方案最好適用於Windows 7及更高版本。)

為什麼在地球上我想這樣做(帖子的長篇部分)

術語

為了簡潔和清晰起見,我將使用以下內容 加粗 條款:

  • 剩下  - 左側物理鼠標按鈕
  •   - 正確的物理鼠標按鈕
  • 點擊  - 按下時通常發送的信號 剩下,用於例如選擇一個文件,單擊一個按鈕,拖放一個窗口
  • 菜單  - 按下時通常發送的信號 ,用於例如打開上下文菜單
  • 贏交換  - Windows控制面板>鼠標設置 剩下 火 菜單 和  火 點擊

問題

我是左撇子。我用左手使用鼠標。作為一個正常的人,我觸發 點擊 用我的食指和 菜單 用我的中指 - 這意味著我用  至 點擊 和 剩下 至 菜單。一般, 贏交換 就足夠了 - 它適用於瀏覽器,辦公軟件,媒體編輯器,編程IDE等。

不幸的是,我也是一名遊戲玩家。由於 DirectX如何處理鼠標按鈕的特性,相當多的遊戲 - 無論是高預算版本還是單一開發者免費軟件 - 都無視 贏交換 和(AFAIK)從驅動程序級別讀取按鈕信號。

這通常意味著(如果你不能在遊戲中重新綁定鼠標按鈕)整個遊戲基本上無法播放或者(如果你 能夠 重新導航遊戲菜單中的導航需要大量的集中,並且不斷承擔無法執行簡單任務的風險。

無論哪種方式,它都是相當不愉快,令人煩惱並且讓我的愛好變得困難,因為這意味著我必須放棄我感興趣的遊戲。

我試過的解決方案

我買了Razer Abyssus。它的兩個版本的驅動程序都非常嚴重 - 為了啟用左手按鈕佈局 - 我需要設置一系列Abyssus-old驅動程序-X-Mouse Button Control。由於Razer應該是遊戲相關外圍設備的領導者之一,事實上他們無法使基本級別的可用性成為驅動程序,這讓我對任何遊戲鼠標的信任和金錢都很謹慎。

在過去的5年中,我嘗試了大約8種不同的應用程序(包括付費軟件的演示),它們應該交換按鈕。不幸的是,他們都沒有工作 - 他們要么是一個UI疊加 贏交換 或者交換比甚至更淺 贏交換 (d-鼠標)。

X-Mouse按鈕控制最接近,但不幸的是它實際上並沒有攔截原始信號,所以你最終都發送了兩個 點擊 和 菜單單擊鼠標按鈕時。

我也試過AutoHotKey,但簡單的宏行

left::right
right::left

沒有用,社區也沒什麼幫助。 (AHK論壇過去常常填寫RTFM回复。)

可能的陷阱

據說,某品牌筆記本電腦在控制面板中有自定義鼠標菜單傳播 贏交換 到司機級別。


提前感謝您的任何答案。如果您需要澄清/更多信息,我應該能夠在24小時內提供。


2
2017-10-04 12:20


起源


這不能在鼠標控制面板中切換? - Mark
@Mark正如我在帖子中明確指出的那樣 - 它可以在那里切換,但它僅適用於非全屏應用程序。 - Dragomok
相關(但更具體)的問題: superuser.com/q/462547/493800 - Dragomok
很可能[EitherMouse](www.eithermouse.com)會解決這個問題,但我沒有時間用我的基準測試一個月左右。 - Dragomok
我已恢復您的修改。在超級用戶(以及整個Stack Exchange網絡)上,大多數有用的解決方案都標記為接受答案(正如您已經做過的那樣),而不是在問題中鏈接到它們。當用戶支持它時,答案將被有機地提升到頂部。 - gronostaj


答案:


如果你想永久地切換鼠標按鈕和軟件不會讓你這樣做,那麼你可以嘗試在硬件中進行。

當然,這一切都取決於鼠標硬件本身,但你應該能夠拆焊和重新焊接連接鼠標按鈕的間歇開關的電線。


5
2017-10-04 12:53



我喜歡這個答案。好橫向思考:) - DavidPostill♦
我實際上想知道這樣做 - 但是,我不確定這是否可行/可行。我想,當我有一隻老鼠時,我可以把它傳給一些當地學生或電工,我可能會失敗。謝謝。 (不過,我仍會等待非硬件解決方案。) - Dragomok


顯然,如果您希望鼠標在Windows中按預期工作,您可以訪問執行文件系統驅動程序的人員。

Moure作為Ext2Fsd項目的一部分,實際上讓我的所有基準測試都能完美地完成左手鼠標的工作。

當然,它 在實際窗口中運行並且似乎沒有任何方法可以讓它在啟動時自動運行(或自動將每個鼠標標記為左手) 更改影響所有Windows用戶(而不是單個用戶)的系統範圍的驅動程序,但它 實際上有效

如果我在使用過程中發現任何問題,我會更新這些答案。


1
2017-07-10 14:33





該問題的一個非常不可靠的解決方法是使用以下AutoHotKey腳本(適用於AHK v1.1.24.02,可能更早):

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

LButton::RButton
Rbutton::LButton

它解決了這個問題 一些 遊戲。

不幸的是,它不是一個銀彈解決方案,並且使用起來很煩人,因為它要求你在每次啟動有問題的遊戲時禁用WinSwap(並在你退出時再次啟用它),因為它在活動時幾乎會破壞Windows任務欄(這也使它變得有點棘手)。

我發布它只是因為在盲人的土地上,獨眼男子是國王 - 即使他有嚴重的夜盲症。


0
2017-12-15 19:31



僅供參考,AutoHotkey將允許您使用特定於程序的綁定 #If 陳述和 #IfWinActive,這意味著你應該能夠在某些程序處於活動狀態時啟用它,而不必禁用/啟用WinSwap。例如 #If WinActive("ahk_exe programA.exe") || WinActive("ahk_exe programB.exe") 僅當程序A或B是活動窗口時才會啟用LButton / Rbutton交換。 - JJohnston2
@JJohnston2這是非常有用的信息,對我的其他腳本會派上用場。謝謝。 - Dragomok