本帖最後由 C_Law 於 2011-8-10 13:23 編輯
4. 配合 AutoHotkey 控制非直接支援 WinLIRC 的軟件
AutoHotkey 是個功能強大的軟件,這裡只會粗略講解與 WinLIRC 相關的部份,如想更深入了解 AutoHotkey 的使用方法,請參巧它的 Quick Start Tutorial。
http://www.autohotkey.com/docs/Tutorial.htm
AutoHotkey 的其中一個功能是因應 WinLIRC 接收到的 KeyName 去做指定的動作,例如發出鍵盤或滑鼠按鍵、執行程式……等等。由於一般程式都已為主要功能設定鍵盤熱鍵,因此 AutoHotkey 配合 WinLIRC 一起使用,即使本身不支援 WinLIRC 的軟件也可以被遙控。
4a. 下載及初步設定 AutoHotkey
先到以下網址下載 AutoHotkey 的主程式。
http://www.autohotkey.com/download/
我只試過免安裝的 Zip 版本,下載後只需解壓到一個新資料夾就可使用。
http://www.autohotkey.com/download/AutoHotkey.zip
再到以下網址下載 AutoHotkey 的 WinLIRC script,以滑鼠 Right click [Download This Script]→另存新檔,以 AutoHotkey.ahk 為名存檔到[我的文件]資料夾裡。
http://www.autohotkey.com/docs/scripts/WinLIRC.htm
用記事本打開 AutoHotkey.ahk,按 Ctrl-F 搜尋 Specify the path to WinLIRC,如圖輸入 WinLIRC.exe 的完整路徑、IP Address 及 Port no.(預設是 127.0.0.1 及 8765),然後存檔。
以後執行 AutoHotkey.exe 就會自動執行 WinLIRC。
4b. 編寫 AutoHotkey 指令
執行 AutoHotkey.exe 後,右下角 System tray 會出現綠底白色 H 字的 AutoHotkey icon。
用滑鼠在這 Icon 上 Right click→Edit This Script 會用記事本打開 AutoHotkey.ahk,在記事本按 Ctrl-F 搜尋 ASSIGN ACTIONS,由這裡開始,到 END OF CONFIGURATION SECTION 之間是供用家自行編寫程式碼的位置。這裡原本提供了 5 個例子,可先把這些例子刪除。
以下 3 行程式碼是一組發送按鍵的基本指令:
KeyName:
send Keys
Return
第一行的 KeyName 是 WinLIRC 接收到的遙控鍵名。當 WinLIRC 收到這個遙控鍵的紅外線訊號,AutoHotkey 就會執行之下的指令。KeyName 後面要加上冒號「:」。
第二行的 send 是 AutoHotkey 最常用的指令,它的用途是要 AutoHotkey 向 Windows 發出後面的 Keys 字串。大小階英文、數字(NumPad 除外)和部份標點符號都可以直接用作 Keys。組合鍵、功能鍵、NumPad 鍵及部份標點符號就要使用代碼,有關的代碼可在以下網址找到:
http://www.autohotkey.com/docs/commands/Send.htm
至於第三行,每組 AutoHotkey 程式碼都以 Return 結尾。
另外,編寫程式碼時,每行都可以用分號「;」加入文字說明,在「;」之後的任何文字都會被 AutoHotkey 忽略。
以一般影音播放軟件為例,有很多都可以用 Spacebar 切換播放/暫停,假設想用 Sharp 錄影機的遙控器,而且 WinLIRC 使用我網頁內的 Sharp 錄影機設定檔(下同),如果想用遙控器的 Play 鍵控制影音軟件播放/暫停,可以在 AutoHotkey.ahk 加入以下三行程式碼:
SV-Play: ; Sharp 錄影機遙控器 Play 鍵的 KeyName,後面要加上冒號「:」
send {space} ; {space}是 Spacebar 的代碼
retrun
又例如用 VLC Media Player 播放多聲道電影檔時可以用 b 鍵循序轉換聲道,如果想用遙控器的 Audio 鍵轉換聲道,可以寫成:
SV-Audio: ; Audio 鍵的 KeyName
send b ; 一般英數字符可直接用作 Keys
return
如果用 PotPlayer,它預設以 Alt-A 轉換聲道,可以把剛才的 send b 改寫為 send !a。! 是 Alt 的代碼,!a 就是 Alt-A。
加入程式碼後存檔,然後以滑鼠在 AutoHotkey icon 上 Right click→Reload This Script,新增的功能便會生效。
除此之外,很多軟件都容許用家自行修改鍵盤熱鍵,如果你想用一個遙控器控制多個軟件,可先進入每個軟件的熱鍵設定畫面,將全部軟件都改用同一組熱鍵。
例如 PotPlayer 按 F5:
又例如在 VLC Player 按 Ctrl-P:
注意,設定 AutoHotkey 時最好避免使用其它直接支援 WinLIRC 軟件所用過的遙控鍵,否則可能會出問題。假設 KMPlayer 本身已設定用 Sharp 遙控器的 Play 鍵(SV-Play) 切換播放/暫停,如果 AutoHotkey 又設定將 SV-Play 轉發為 Space 鍵,當按下這遙控鍵時,KMP 一方面收到 Play 鍵訊號,另一方面又從 AutoHotkey 收到 Space 鍵,結果會連續兩次切換播放/暫停。
4c. 切換 Active window
由於 AutoHotkey 的 send 指令是向系統發出模擬按鍵,如果按下遙控器時,心目中想控制的軟件並非 Active window,不單控制不到想要控制的軟件,而且會影響到當時的 Active window。以 4b. 中加入的 Play 鍵程式碼為例,如果當時的 Active window 並非影音軟件,而是記事本,按下 Play 鍵就會向記事本打出一個 Space。因此使用遙控時必需先將心目中要控制的軟件切換為 Active window,而切換 Active window 的其中一個方法是按 Alt-Tab。
你可能會想到 Alt-Tab 的代碼是 !{tab},但當你嘗試加入這程式碼後會發現當按下遙控鍵時只能切換到下一個程式,切換視窗只會閃一下就消失,再按遙控鍵時又會回到之前的程式,繼續按遙控鍵都只會在這兩個程式之間來回切換,根本切換不到其餘的程式。原因是 !{tab} 只會發出一次 Alt-Tab,之後 Alt 和 Tab 鍵都會被放開,但切換程式時是必需保持按下 Alt 鍵,一旦放開 Alt 鍵,切換程式視窗就會消失,就算再按 Alt-Tab 都不能再進一步切換到第三個程式。
要做到保持 Alt 鍵按下的效果可用 {alt down}代碼。不過使用 Alt-Tab 時如果將 Alt 鍵一直按下不放,切換程式的視窗就會一直出現於螢幕中央,因此還需要一個放開 Alt 鍵的代碼 {alt up}。
以下是為切換 Active window 寫成的兩組程式碼:
SV-Menu: ; Menu 鍵的 KeyName
send {alt down}{tab} ; 按一下 Alt-Tab,並且保持 Alt 鍵按下不放
return
SV-Clear: ; Clear 鍵的 KeyName
send {alt up} ; 放開 Alt 鍵
return
以上兩組指令需用到兩個遙控鍵,按 Menu 鍵會帶出切換程式視窗並選擇下一個程式,之後每按一下這鍵會順序選擇再下一個程式。當按下 Clear 鍵時,最後被選擇的程式就會成為 Active window。
注意,有部份軟件在最小化時會縮小到 System tray,不會在 Taskbar 出現,這類軟件是不能以 Alt-Tab 的方法切換為 Active window。
4d. 其它 send 指令的常用代碼
{up}
{down}
{left}
{right}
上、下、左、右箭嘴鍵。
{enter}
Enter 鍵,執行目前選擇的選項。
{space}
Spacebar 鍵,執行目前選擇的選項,又或是切換 Checkbox 的狀態。
{esc}
Esc 鍵,退出目前的選單,或是等於用滑鼠按[取消]按鈕。
^o
Ctrl-O,通常用作開啟舊檔。
!{space}
Alt-Space,等同用滑鼠按 Active window 左上角的 Icon,配合方向箭嘴及 Enter 鍵使用,可以將 Active window 切換到最大化、最小化、關閉程式……等等。
{tab}
Tab 鍵,順序跳到下一個控制項。
{Volume_Up}
{Volume_Down}
{Volume_Mute}
有多媒體控制鍵的鍵盤上的音量增加、減少及靜音狀態切換鍵,用來控制系統的主音量。就算使用普通鍵盤,AutoHotkey 也可模擬發出這三個鍵。增加或減少音量時,如果覺得增減幅度太小,可以在「}」之前加上一個空格及數字,例如:{Volume_Up 3},等於一次過按三下音量增加鍵。
{LButton}
{MButton}
{RButton}
滑鼠的左、中、右鍵。除了鍵盤按鍵外,AutoHotkey 的 send 指令也可以模擬發出滑鼠按鍵,當中以滑鼠右鍵尤其有用,對於很多多媒體播放軟件,幾乎所有功能都可以在 Right click menu 中找到,利用滑鼠右鍵,再配合箭嘴鍵及 Enter 鍵,就能執行 Right click menu 內各個選項。
4e. 執行程式
無論是否直接支援 WinLIRC 的軟件,就算已設定好 WinLIRC 及 AutoHotkey,但如果該軟件根本未被執行,也是無法被遙控。不過,AutoHotkey 除了可以發出鍵盤按鍵之外,也可以執行程式,以下是執行程式的基本編碼:
KeyName:
run, Target
return
第一和第三行跟 4b. 一樣。至於第二行的 run 是要 AutoHotkey 執行程式,而 Tartget 就是要執行的軟件主程式檔名。如果是經正式 Installer安裝的軟件,通常可以只用主程式的檔名(甚至連幅檔名.exe 都可省去),例如想用遙控器的 Power 鍵執行 KMPlayer,可以寫成:
SV-Power: ; Sharp 遙控器 Power 鍵 KeyName
run, kmplayer ; 執行 KMPlayer,run 之後要有逗號「,」
return
但非正式安裝的軟件(例如 Portable 軟件)就要連同完整路徑及幅檔名,第二行要改寫為:
run, C:\Program Files\The KMPlayer\KMPlayer.exe
有部份軟件本身規定同時間只可以執行一個該軟件的主程式(例如 DVB Viewer),又或者該軟件有提供這個選項(例如 KMPlayer),如果這軟件已經開啟但並非 Active window,只要再執行它的主程式就可以立刻把它切換成 Active window,不一定要用 4c. 的 Alt-Tab 方法。不過,KMPlayer 亦可以設定成同時開執行主程式,設定成這樣的話,每按一次 Power 鍵就新開一個 KMPlayer 視窗,而不是將原來的 KMPlayer 切換成 Active window。
|