【问题标题】:filtering keyboard input with autohotkey使用自动热键过滤键盘输入
【发布时间】:2013-06-11 15:26:52
【问题描述】:

我最近弄坏了我的键盘,并在自动热键中编写了一些非常临时的、低效的程序来修复它们

这是我当前笔记本电脑键盘的输出: y = ry h = fh n = {输入}+n 6 = 46

我目前为每个损坏的键运行 4 个自动热键文件。下面是h的文件

hadjust.ahk

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

while true {

KeyWait, h,D
Sleep 20
Send {BS}
Send {BS}
Send {h}


}

如何将四个 .ahk 文件合并为 1 个?有没有更好的方法来做到这一点?

** 编辑我找到了一种在一个文件中执行此操作的方法,但我无法使用 n/enter 键。

这里是代码...

stackadjust.ahk

:?*:fh::h
:?*:hf::h
:?*:ry::y
:?*:yr::y
:?*:46::6
:?*:64::6
:?*:n{Enter}::n
:?*:{Enter}n::n

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    对于最后两个条目,您可以使用以下代码:

    :*:n`n::n
    :*:`nn::n
    
    ;Comment: `n = {Enter}
    

    【讨论】:

    • 谢谢罗伯特,它现在对重复的 n 有效,但在句子中仍然无效。
    • 我只是尝试将其更改为 :?*:nn::n :?*:nn::n 并且效果更好,但是换行符会到处溜走。
    【解决方案2】:

    如果您的键盘大致同时发送双键, 可以使它们成为双热键。

    这样你仍然可以输入诸如“愤怒”之类的词......

    y & r::send, {blind}r
    $y::send, {blind}y
    $+y::send, {blind}Y
    4 & 6::send, {blind}6
    $4::send, {blind}4
    $+4::send, {blind}$
    f & h::send, {blind}h
    $f::send, {blind}f
    $+f::send, {blind}F
    n & Enter::send, {blind}n
    $n::send, {blind}n
    $+n::send, {blind}N
    $Enter::
    if (A_PriorHotkey = "n") and (A_TimeSincePriorHotkey < 500)
    {
      Soundbeep, 500, 200
      return
    }
    Send, {Enter}
    return
    

    发送“blind”(针对 shift、alt 和 ctrl 状态) 可能没有必要,但没有伤害。 更新:由于 Enter 似乎更卡住了,我将最多删除 Enter 最后一个 n 后 500 毫秒。在这种情况下,我会发出提示音。

    【讨论】:

    • 感谢 576i。这似乎运作良好,而且无论如何。尽管在 fb 聊天、Chrome 地址栏以及其他任何 Enter 键有动作的地方,我仍然让 Enter 键滑过
    • 编辑了脚本以捕捉在“n”之后最多 500 毫秒内按下的任何回车键。我还添加了“移位”键,因为脚本是大写字母。我 Alt+Cltr 组合被此脚本杀死,您也需要添加它们。如果它可以正常工作,请不要忘记将其标记为已解决:)
    • 抱歉,仍然无法正常工作:/ 通常,当我按下“n”时,它会输出“enter”然后是“n”,但有时会切换顺序。我需要类似 `$Enter:: elapsedTime = 0 while(elapsed time
    • 好的,您正在寻找“GetKeyState”命令。因此,您需要将 Enter Hotkey 扩展为循环 500 ms 并获取 n 键的状态,如果按下,则退出。然后 n 将触发它自己的热键。唉,周末之前没时间给你写完整的剧本……
    猜你喜欢
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多