玩過天堂都知道,如按住A時再按B,只會跑出B的結果。
在天堂程式裡,會有一個大問題,就是如果熱鍵使用魔法,會中斷原先用的熱鍵快捷鍵
舉例來說,我在F1擺了紅水,在F2擺了治癒術。
一邊按著F1,一邊用滑鼠中鍵對怪放火球,
很開心地在逛大街,結果引太多怪物,血量掉的速度古紅喝不回來,
這時候我快速按F2兩次,對自己施放治癒術,這樣就會導致但是原先按住的F1就失去了效用,不再喝古紅
必須得重新再按F1才能再度喝水。一般情形還好,但在引一堆怪的情況下,常常會手忙腳亂
血噴到得同時古紅+高治時,使用高治卻使得古紅失效,
得多花時間重按F5,反而會造成危機。
因此有必要讓在按住A再按S的情況下,
輸出不是:AAAAAAAAAAAAAAASSSSSSSSSSSSSSSSSS
而是變成:AAAAAAAAAAAAAAASASASASASASASASAS
幾經思考後,最後找到用Autohotkey的腳本解決了。
關於Autohotkey 說明開始
Autohotkey是一個可以透過自訂熱鍵的方式,來執行windows的功能,
Autohotkey可以編寫腳本(副檔名ahk),來載入設定。
例如下面這個腳本:
$#s:: ;用win鍵+s搜尋反白字串
Send, ^c
Sleep 500
Run
Return
效果是:在滑鼠反白字串的時候,按下Win鍵與S鍵,可以把反白的字串拿去Google搜尋。
ahk的功能很多,像是開關螢幕、調整音量、執行程式、
按個鍵上youtube找「我難過」來放、設定幾秒鐘之後關閉電腦、
在XP下模擬出Win7用win+1、2...切換視窗等的功能都寫得出來,
有興趣的可以去找,Autohotkey的中文幫助文件(網路上是簡體的)來學學。
當然很會寫的還會弄出自動練功那種有的沒的,
但那就不是我使用這個程式的目的了,
這年頭不想自己按的人,也都用天堂專門的外掛去了。
─────關於Autohotkey 說明結束─────
回到主題,一般的鍵盤會在先按住F1再按F2的情況下,輸出F2的訊號,
那就想個辦法讓按住的F1的訊號也能送出去,不受再按F2的影響。
因此透過Ahk的腳本,寫成:
$F1:: ;按下F1
Loop
{
if not GetKeyState("F1", "P") ;如果沒按著F1,跳出循環
break
Send {F1}
Sleep, 20 ;加個sleep,不然一直按會crash
}
return
這個腳本的意思是:
當F1被按住時,程式會間隔20ms,送出F5的訊號。
加間隔是因為不加的話,會因為輸出訊息過多然後程式當掉,
就結果來看,按F1還是F1,不按F1也沒事發生,在使用上沒什麼不同。
唯一改變的是,在按住F2的時候,
F1的訊號不再由鍵盤送出,而是改由ahk程式送出,
此時再按鍵盤的F2,鍵盤會送出F2的訊號,
而鍵盤送出的F2,並不會阻斷ahk所送出的F1,
這樣可以使得後按的F2不會中斷先前按的F1。
因此執行這個腳本後,
就可以在按住F1紅水的情況下,再按F2的魂體,
能持續使用魂體,不會中斷F1喝紅水。
同理也可以在按住F1紅水的情況下,連按兩次F9的高治自補,
用高治自補,不會中斷F1喝紅水。
不過這個腳本有個BUG,
如果先按住F2魂體,再按F5紅水,就只會魂體有效果,不會喝紅水。
但通常不會這樣按,所以影響還好。
如果藥水不是擺在F1是擺在F7,
那可以把腳本裡的F1改成F7,,如下面紅色的部份。
註:「;按下F7」這句是說明,不影響程式效果,要用說明的話是接在;符號之後。
$F7:: ;按下F7
Loop
{
if not GetKeyState("F7", "P") ;如果沒按著F7,跳出循環
break
Send {F7}
Sleep, 20 ;加個sleep,不然一直按會crash
}
return
以上就是用Autohotkey軟體來解決一般鍵盤的輸入限制,
畢竟硬體解法大概要找個數千元的全局防鬼鍵鍵盤
|