按鍵持續(xù)按下/防止自動重復/按鍵按下狀態(tài)[AutoHotkey|AHK][Timer|計時器|定時器][GetKeyState|獲取按鍵狀態(tài)][持續(xù)|保持|按下|抬起|釋放|狀態(tài)|形態(tài)|重復|間...

  • 標題:
    按鍵持續(xù)按下 / 防止自動重復 / 按鍵按下狀態(tài)
  • 標簽:
    AutoHotkey | AHK | Timer | 計時器 | 定時器 | GetKeyState | 獲取按鍵狀態(tài) | 持續(xù) | 保持 | 按下 | 抬起 | 釋放 | 狀態(tài) | 形態(tài) | 重復 | 間隔 | 阻塞
  • 標注:
    http://www.itdecent.cn/p/374615ff8006
    http://www.itdecent.cn/u/1275d25b625e

AutoHotkey中只有少數(shù)按鍵(例如控制鍵和鎖定鍵)帶有按下(Down)和抬起(Up)形態(tài);若想設計可持續(xù)按下的熱鍵,則很有可能觸發(fā)系統(tǒng)的自動重復事件(保持按下一段時間后的自動重復)。雖然可以通過調整鍵盤屬性或啟用重復鍵來改善此現(xiàn)象,但讓系統(tǒng)設置反向適應腳本的行為顯得有些本末倒置。

  • 鍵盤 屬性
    C:\Windows\System32\rundll32.exe C:\WINDOWS\System32\shell32.dll,Control_RunDLL C:\WINDOWS\System32\main.cpl,@1
    
    可保存為快捷方式或嵌套于命令行使用。
  • 設置篩選鍵
    控制面板\輕松使用\輕松使用設置中心\設置篩選鍵
    
    控制面板路徑。
  • 設置重復鍵和慢速鍵
    控制面板\輕松使用\輕松使用設置中心\設置重復鍵和慢速鍵
    
    控制面板路徑。

本文將為您介紹,如何通過簡單的判定邏輯來避免系統(tǒng)的自動重復事件。

Global 示例按鍵 := "g"
Global 示例按鍵_間隔 := 200 ; 按鍵重復的間隔.
Global 示例按鍵_已釋放 := 1 ; 默認為抬起狀態(tài).

Hotkey, %示例按鍵%, 示例標簽 ; 創(chuàng)建熱鍵.


Return ; END AUTO-EXECUTE |


示例標簽: ; 標簽: 邏輯入口.
    If !示例按鍵_已釋放 ; 如果按鍵被判定為正在按下-
        Return ; 則拒絕繼續(xù)執(zhí)行;
    示例按鍵_已釋放 := 0 ; 否則繼續(xù)執(zhí)行并將按鍵標記為已按下.

    SetTimer, 示例標簽_示例按鍵_按鍵狀態(tài), 50 ; 創(chuàng)建或重設計時器, 以50次/秒的速率檢查按鍵狀態(tài).

    示例標簽_主邏輯: ; 標簽: 主要邏輯, 隨入口自然執(zhí)行.
        SetTimer, 示例標簽_主邏輯, %示例按鍵_間隔% ; 創(chuàng)建或重設計時器, 以指定間隔重復此標簽.
        Send, {h} ; 發(fā)送按鍵.
    Return ; 自然停止.

    示例標簽_示例按鍵_按鍵狀態(tài): ; 標簽, 檢查按鍵狀態(tài).
        If !GetKeyState(示例按鍵, "P") { ; 如果按鍵不再被按下,
            SetTimer, 示例標簽_示例按鍵_按鍵狀態(tài), Off ; 關閉此計時器-
            SetTimer, 示例標簽_主邏輯, Off ; 和主邏輯計時器,
            示例按鍵_已釋放 := 1 ; 并將按鍵標記為已抬起.
        }
Return ; END FUNC : 示例標簽 /

腳本通過計時器獲取按鍵狀態(tài)并以此拒絕冗余按鍵;至此,腳本已按預期執(zhí)行。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容