Скрипт AutoHotKey меняет язык ввода, как этого избежать? - PullRequest
0 голосов
/ 13 января 2019
; 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 Ответ

0 голосов
/ 15 января 2019

Хотя я не могу точно сказать, почему открывается языковая панель, в этой статье показано, как отключить встроенные горячие клавиши для языковой панели: 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" ) . "}"

Я не знал, что все это можно поместить в одну строку, поэтому я кое-что узнал сегодня. : D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...