作者UndeadSion (UndeadSion)
看板EZsoft
標題[免費] AutoHotkey 滑鼠設定快速鍵
時間Tue Jun 30 02:03:43 2009
修改一下之前的 Script,主要是改變了快速鍵的操作方式,並增加 OSD 顯示,
感謝 gonia119 板友來信建議 :)
AutoHotkey
http://www.autohotkey.com/
將以下 Script 存檔為 .ahk 用 AutoHotkey 執行,或是編譯成 .exe 單獨執行
; --------------------------------------------------------------------
; 《滑鼠設定快速鍵》
;
; 【操作方式一】
;
; Win + 滑鼠滾輪上滾 增加滑鼠速度
; Win + 滑鼠滾輪下滾 減少滑鼠速度
; Win + 滑鼠滾輪鍵 (中鍵) 啟用/停用滑鼠加速
;
; 【操作方式二】
;
; Win + NumpadAdd 增加滑鼠速度
; Win + NumpadSub 減少滑鼠速度
; Win + NumpadMult 啟用/停用滑鼠加速
; --------------------------------------------------------------------
; --------------------------------------------------------------------
; OSD GUI
; --------------------------------------------------------------------
Gui, Color, 000000
Gui, +AlwaysOnTop -Caption +Disable +LastFound +ToolWindow
WinSet, TransColor, 000000
Gui, Font, cAqua s24 bold, MS Sans Serif
Gui, Add, Text, x0 y0 w240 vMouseSensitivityText
Gui, Font, cLime
Gui, Add, Text, y+0 w240 vMouseAccelerationText
Return
; --------------------------------------------------------------------
; OSD Subroutine
; --------------------------------------------------------------------
OSD:
Gosub, OSD_Update
SetTimer, OSD_Update, 100
Gui, Show, AutoSize Center NoActivate
SetTimer, OSD_Off, 2000
Return
OSD_Update:
Gui, +AlwaysOnTop
MouseSensitivity := GetMouseSensitivity()
MouseAcceleration := GetMouseAcceleration()
If MouseAcceleration = 0 0 0
Gui, Font, cRed
Else
Gui, Font, cLime
GuiControl, Font, MouseAccelerationText
GuiControl,, MouseSensitivityText, 滑鼠速度`t%MouseSensitivity%
GuiControl,, MouseAccelerationText, 滑鼠加速`t%MouseAcceleration%
Return
OSD_Off:
Gui, Hide
Return
; --------------------------------------------------------------------
; Hotkey Configuration
; --------------------------------------------------------------------
#WheelUp::
#NumpadAdd::AddMouseSensitivity()
#WheelDown::
#NumpadSub::SubMouseSensitivity()
#MButton::
#NumpadMult::ToggleMouseAcceleration()
; --------------------------------------------------------------------
; Mouse Sensitivity Function
; --------------------------------------------------------------------
GetMouseSensitivity()
{
DllCall("SystemParametersInfo", UInt, 0x70, UInt, 0
, UIntP, MouseSensitivity, UInt, 0)
Return, MouseSensitivity
}
SetMouseSensitivity(MouseSensitivity)
{
DllCall("SystemParametersInfo", UInt, 0x71, UInt, 0
, UInt, MouseSensitivity, UInt, 1)
}
AddMouseSensitivity()
{
If (MouseSensitivity := GetMouseSensitivity()) < 20
SetMouseSensitivity(++MouseSensitivity)
Gosub, OSD
}
SubMouseSensitivity()
{
If (MouseSensitivity := GetMouseSensitivity()) > 1
SetMouseSensitivity(--MouseSensitivity)
Gosub, OSD
}
; --------------------------------------------------------------------
; Mouse Acceleration Function
; --------------------------------------------------------------------
GetMouseAcceleration()
{
VarSetCapacity(MouseAcceleration, 12, 0)
DllCall("SystemParametersInfo", UInt, 3, UInt, 0
, UInt, &MouseAcceleration, UInt, 0)
MouseThreshold1 := NumGet(MouseAcceleration, 0)
MouseThreshold2 := NumGet(MouseAcceleration, 4)
MouseSpeed := NumGet(MouseAcceleration, 8)
Return, % MouseSpeed . " " . MouseThreshold1 . " " . MouseThreshold2
}
SetMouseAcceleration(MouseSpeed, MouseThreshold1, MouseThreshold2)
{
VarSetCapacity(MouseAcceleration, 12, 0)
NumPut(MouseThreshold1, MouseAcceleration, 0)
NumPut(MouseThreshold2, MouseAcceleration, 4)
NumPut(MouseSpeed, MouseAcceleration, 8)
DllCall("SystemParametersInfo", UInt, 4, UInt, 0
, UInt, &MouseAcceleration, UInt, 1)
}
ToggleMouseAcceleration()
{
If GetMouseAcceleration() = "0 0 0"
SetMouseAcceleration(1, 6, 10)
Else
SetMouseAcceleration(0, 0, 0)
Gosub, OSD
}
------------- 補 ------ 充 ------ 分 ------ 隔 ------ 線 -------------
■ 誰適合用
需要頻繁切換滑鼠設定的使用者,如美工繪圖人員、電腦遊戲玩家等等
■ 備註
1. 這個 Script 在某些滑鼠廠商的驅動程式下不一定能動作,如果控制台可以
調整相關設定,不需要進入滑鼠驅動程式的專屬介面的話,通常就可以使用
2. 有些應用軟體或遊戲會阻擋 AutoHotkey/AutoIt/EZScript 等快速鍵工具,
這個 Script 可能無法在這些軟體或遊戲上運作
3. OSD 在全螢幕模式下可能會閃爍或無法顯示
若有其它問題,歡迎指教 :)
本著作係採用 Creative Commons 姓名標示-非商業性-相同方式分享 台灣 授權條款授權
http://creativecommons.org/licenses/by-nc-sa/2.5/tw/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.159.124
→ ileadu:應該轉到EZScript去吧? 06/30 11:38
推 gonia119:感謝,太強大了... 06/30 12:12
→ UndeadSion:給一樓,不妨當作是免費軟體釋出,只不過程式碼不長, 06/30 19:20
→ UndeadSion:又可以用 AutoHotkey 直接執行,就沒編譯成執行檔囉 :) 06/30 19:20
→ UndeadSion:嗯……我再補充一些說明好了 06/30 19:23
※ 編輯: UndeadSion 來自: 60.248.159.124 (06/30 19:26)
推 abljy:大大有沒有考慮來個64bit OS版的XD 06/30 23:52
→ UndeadSion:這得 AutoHotkey 先支援 64-bit 編譯模式再說 :p 07/01 01:03