以 AutoHotKey 自訂 ShuttlePro v2 功能

ShuttlePro v2 通常是影音工作者在用的輸入工具,不過用在放射科醫師的閱片工作上也蠻不錯的,主要是它有個可以設定不同速率的外環, 扳著旋鈕就可以依照設定的速率滾動 CT 之類的影像,減少重複滾動滑鼠滾輪這個動作造成的職業傷害,但官方的設定程式其實有限制,重複的頻率沒辦法設得很細(如下圖),例如每秒兩次的下一級就是五次,再來就是十次,變化有點大,時間久了當然也習慣了,但總覺得不能細調有點可惜(我就想要每秒滾 2.5 次不行嗎?)

ShuttlePro v2 Settings

AutoHotKey 是一套 Windows 上面的 script language, 主要是用在簡碼片語的置換替代,還有自動化的項目,由於它也可以呼叫 Windows API,所以可以進行一些較底層複雜的工作。AutoHotKey 雖可以控制鍵盤、滑鼠、甚至是 Joystick,但 ShuttlePro 是一種特殊的 HID (human interface device) ,所以 AutoHotKey 沒有內建支援。所幸有人也有同樣的需求,所以早在 2013 年,就有人寫好它的控制程式發布在 AutoHotKey forum 裡。

這個 script 通過接收 WM_INPUT 來攔截 ShuttlePro 的輸入,為了怕 AutoHotKey forum 之後消失(也不是沒消失過),我把精簡後的版本放一份在 Gist 上留存

據原作者所言,他甚至實現了類似 shift 概念的 layer 功能,但我在 Win10 上測起來怪怪的,反正這也不是我需求的功能(連 15 個鍵都用不完了 XD),所以就拿掉了。另外說明的是,如果要在所有的程式裡接收 ShuttlePro 的輸入,AHKHID_Register() 要加入 RIDEV_INPUTSINK 這個 flag。按鍵對應的功能寫在 execute_shuttlepro() 裡,外輪對應的功能寫在 execute_shuttlepro_speed() 裡,內輪對應的功能寫在 execute_shuttlepro_shuttle() 裡。

要實現每秒動作幾次這樣的功能,可以使用 AutoHotKey 內建的 SetTimer 語法。要針對不同的程式,可以用 WinActive() 做偵測。提供給有類似需求的人參考。


One Comments

Leave a Reply