Могут ли циклические ссылки вызывать ошибки в AutoHotKey? - PullRequest
0 голосов
/ 25 мая 2020

Я написал свой первый скрипт AutoHotKey, но, похоже, в этом разделе есть ошибка:

^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
^x::Send ^+v ; Paste without formatting

Я не могу заставить работать Cut (2-я строка).

В чем проблема?

Если я закомментирую 5-ю строку, то Cut будет работать. Однако я никогда не заставлял их работать одновременно. Проблема с 1-й строкой с точкой с запятой (;)?

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Ваша проблема действительно была вызвана горячими клавишами, запускающими другие горячие клавиши, и ее можно исправить с помощью модификатора $, как описано в другом ответе, но я бы рекомендовал вам просто использовать красивый и простой синтаксис переназначения вот так:

^;::z ; Undo
^q::x ; Cut
^j::c ; Copy
^k::v ; Paste
^x::+v ; Paste without formatting
1 голос
/ 25 мая 2020

Это происходит потому, что нажатие Ctrl + Q запускает горячую клавишу «вырезать», которая нажимает Ctrl + X , которая запускает горячая клавиша «вставить без форматирования», которая нажимает Ctrl + Shift + V .

Таким образом, текстовый процессор получает

  1. Ctrl + X (вырезать) и
  2. Ctrl + Shift + V (вставить без форматирования),

, который очищает только форматирование текста.


К счастью, есть простое исправление: префикс $ горячей клавиши . Из docs :

Префикс $ заставляет использовать ловушку клавиатуры для реализации этой горячей клавиши, что в качестве побочного эффекта предотвращает запуск команды Send.

Вам просто нужно префикс горячих клавиш, которые Send могут запускать, с помощью $.

^;::Send ^z ; Undo
^q::Send ^x ; Cut
^j::Send ^c ; Copy
^k::Send ^v ; Paste
$^x::Send ^+v ; Paste without formatting
...