代码之家  ›  专栏  ›  技术社区  ›  kakakali

自动热键脚本更改输入语言,如何避免这种情况?

  •  0
  • kakakali  · 技术社区  · 6 年前
    ; switch between virtual desktops (win10)
    ; supposed to be launched in initial desktop
    flag := 0
    LAlt & D::
    if(flag = 0){
        send, {Control Down} {LWin Down} {Right} {Control Up} {LWin Up}
        flag := 1
        Return
    }
    else{
        send, {Control Down} {LWin Down} {Left} {Control Up} {LWin Up}
        flag := 0
        Return
    }
    

    应用时,有机会显示语言栏,甚至更改输入语言。有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   EJE    6 年前

    虽然我不能确定它为什么会打开语言栏,但本文展示了如何禁用语言栏的内置热键: https://winaero.com/blog/change-hotkeys-switch-keyboard-layout-windows-10/

    您的代码也可能存在一些小问题。看起来你的大括号之间有空格;Send命令将发送这些空格。当然,我不希望这会导致您遇到的问题。

    <!d::
    flag := !flag
    If flag
        Send , ^#{right}
    Else
        Send , ^#{left}
    Return
    

    下面是一个使用三元运算符的更精简的版本:

    <!d::
    sKeyName := ( flag := !flag ) ? "right" : "left"
    Send , ^#{%sKeyName%}
    Return
    

    这是一行:

    <!d::Send , % "^#{" . (( flag := !flag ) ? "right" : "left" ) . "}"