如果最后一个字符是空格则触发 « 如果不是则触发 »

Trigger « if last char is whitespace and » if not

我想在每次按下 Shift+Numpad7 时打印 «»

我知道如何设置两个不同的脚本:例如+Numpad7::«+Numpad8::»,但是有没有办法让输出取决于插入符号之前的字符是否为空格?

也就是说,我可以输入类似 «Hello» 的内容,我两次都按了 Shift+Numpad7

移动小键盘数字可能会意外覆盖(就像在我的系统上一样)所以我使用了 Ctrl Numpad7,但是 YMMV:

^Numpad7::
    oldClip := Clipboard ; save current clipboard
    Send, +{Left}^c{right} ; select char to the left and copy to clipboard
    ClipWait
    lchar := Clipboard = " " ? "«" : "»" ; check if space or not
    Send, %lchar% ; send lchar
    clipboard := oldClip ; restore original clipboard
    ClipWait
return

顺便说一句,由于 AHK 的 unicode 和 ansi vers 处理该字符的方式不同,因此在某些系统上,您可能会在输出中获得额外的前置字符。只需将最后一个发送到:

    Send, % SubStr(lchar, 0) ; send last character of lchar

让我们知道哪个版本适合您。