[英]; as a new modifier key
我要;
成為一個新的修飾鍵。 以下工作幾乎完美。
`;::
if GetKeyState("LShift", "P")
Send `:
else
Send `;
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
以下願望清單中只有第 2 點不起作用。 有人知道如何修復此代碼嗎?
;
成為;
單獨按下時shift;
to be :
當單獨按下時;
x
是第二個...
shift
;
x
是第一個...
在我看來,有兩種可能的方法可以使第 2 點起作用。
方法一:保持左Shift鍵的默認行為
移位+ ; 結果:冒號鍵被按下。 您可以通過在`;之前添加波浪號“~”鍵來使第 2 點起作用並刪除
else
send `;
使用 ~ 您可以保持密鑰的默認行為。 新腳本看起來像這樣
~`;::
if GetKeyState("LShift", "P")
Send `:
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
通過使用此方法腳本將能夠發送: with shift+; .
方法二:去掉左Shift鍵的默認行為
在您的代碼中添加以下代碼段
LShift::
Send, {}
return
此代碼段將使第 2 點起作用,但會使左 Shift鍵對其他所有內容幾乎無用。
編輯
方法三:制作;
等待x
將KeyWait
添加到腳本中會使其在執行代碼之前等待一定的時間。 其次使用Lshift
+ ;
作為單獨的熱鍵組合,將 output 轉換為:
,無需使用~
作為回報。
`;::
KeyWait, `;, T0.2
Send `;
return
LShift & `;::
Send `:
return
`; & x::
KeyWait, `;, T0.2
if GetKeyState("LShift", "P")
...
else
...
return
以下工作完美,但由於代碼重復而代碼難看。 也許更簡潔的代碼是可能的。
started := 0
LShift & `;::
if started = 0
started := A_TickCount
return
`;::
if started = 0
started := A_TickCount
return
LShift & `; Up::
if A_TickCount - started < 500
Send `:
started = 0
return
`; Up::
if A_TickCount - started < 500
Send `;
started = 0
return
`; & x::
started = 0 ; <==== !
if GetKeyState("LShift", "P")
...
else
...
return
關鍵;
現在,只要它與x
組合使用(無延遲)或按下超過半秒,就可以用作修飾鍵。 延遲不是必須的,可以消除; 它只是在那里防止將意外的修飾鍵誤解為;
. 冒號:
也可以正常工作。
#MaxThreadsPerHotkey 2 ; allow 2 "instances" of the hotkey subroutine to exist simultaneously
`;::
If (A_PriorKey = "`;") ; ; was pressed alone
Send `;
return
LShift & `;:: Send :
`; & x::
if GetKeyState("LShift", "P") ; ; & LShift & x
Send a
else ; ; & x
Send b
return
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.