- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用了数千个 AHK 热字符串。例如(简化):
::btw::by the way
与大多数 AHK 用户不同,我允许的唯一结束键是 \
。因此,当我输入 btw\
时,我会得到顺便
。空格或 Enter 或其他此类键不会触发热字串。这可以确保热字符串永远不会无意中触发。
现在,我也使用和弦。这是我的和弦的简化版本:
~t & g::
~g & t::
SendInput {Backspace}
SendInput {Space}the{Space}
Return
这些和弦的工作方式是,如果我将手指按在 t
和 g
键之间的边界上,AHK 会键入 (前后各有一个空格。)非常有用。
现在,我想更进一步:我希望和弦能够自动触发热弦。例如,假设我想顺便输入。我可以输入
btw\
,然后一起输入 t
和 g
。但是,如果我可以跳过反斜杠,而是让和弦自动启动热弦,那就更好了。 (当然,仅在和弦之前的文本是热弦的情况下。)
现在显然,我希望它不仅适用于 btw
和 t
+g
的特定组合,而且适用于任何组合来 self 大量收藏的热弦和和弦。
我该怎么做?
(我想到的一个想法是,AHK 可能有一个功能,每次按下结束键时它都会启动,该功能的作用是“查看用户到目前为止输入的文本。它是热字符串吗?” ?如果是这样,执行它。”如果我有办法从我的和弦脚本中调用该函数,那就可以解决我的问题。但是,我不知道该怎么做。)
最佳答案
你的问题让我很困扰,我一直在尝试,直到找到一个似乎效果很好的解决方案:
#HotString *B0
SendMode, Input
endChars := "`n `t"
interruptChars := chr(8) ; 8 is BACKSPACE
counter := 33
while(counter <= 126)
{
interruptChars .= chr(counter++)
}
Loop, Parse, endChars
{
Hotkey, *~%A_LoopField%, FinishHotstring
}
Loop, Parse, interruptChars
{
Hotkey, *~%A_LoopField%, InterruptHotString
}
; this is our pending hotstring replacement
pendingHS := ""
; this var will hold the number of BACKSPACEs needed
; to erase the input before replacing the hotstring
pendingBS := -1
Exit
::btw::
pendingHS := "by the way"
RegExMatch(A_ThisLabel, ":.*?:(.*)", abbr)
pendingBS := StrLen(abbr1)
return
::bt::
pendingHS := "Bluetooth"
RegExMatch(A_ThisLabel, ":.*?:(.*)", abbr)
pendingBS := StrLen(abbr1)
return
~t & g::
~g & t::
if(pendingHS) {
pendingBS++
Send % "{BACKSPACE " pendingBS "}" pendingHS " the "
pendingHS := ""
} else {
Send % "{BACKSPACE} the "
}
Return
FinishHotstring:
if(pendingHS) {
pendingBS++
Send, % "{BACKSPACE " pendingBS "}" pendingHS
pendingHS := ""
}
return
InterruptHotString:
if(pendingHS) {
pendingHS := ""
}
return
遗憾的是,这个解决方案与 AHK 的热字符串标准相差甚远。一开始,您必须定义自定义 endChars
以及自定义 interruptChars
(它们告诉脚本您的热字符串实际上不是一个,因为它是立即触发)。我使用了 BACKSPACE 和 ASCII 字符 33 到 126。
其余部分是不言自明的:每个所谓的热字符串都已存储但尚未发送。如果触发 endChar
或 chord
或 interruptChar
,脚本要么发送常用的热字符串替换,要么添加和弦附录,或者不发送什么都不做。
请讨论!
关于keyboard - AutoHotKey:获取和弦以触发热弦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087964/
我使用Andrew的d3和弦图示例并希望将弯曲切片内的所有文本标签居中。我尝试了很多东西,但始终无法将文本居中。你知道需要什么巫师技巧吗? var width = 720, height = 720,
我正在尝试实现一个系统,在该系统中我可以同时播放一组频率,目前可以单独播放每个频率。下面我有一个代码,它播放给定的频率,一次播放一个。 import java.applet.*; im
是否可以一次重新映射使用 ctrl+k 作为第一个按键操作的所有和弦? 我使用 ctrl+k 删除该行的其余部分。由于它与 vscode 中使用的最常见和弦冲突,因此通过快捷方式重新映射快捷方式会很不
我是一名优秀的程序员,十分优秀!