Хорошо, что вы нашли способ, вот некоторая дополнительная информация для вас:
Во-первых, проблема в том, что клавиши backtick не существует на вашей раскладке клавиатуры, поэтому вы получаете довольно неожиданное, даже ошибочное поведение при попытке отправьте его обычно .
Переключитесь, например, на раскладку клавиатуры Engli sh (US), и вы увидите, как {`` 3}`n`n{`` 3}{Up 2}
работает просто отлично.
И это подводит меня к другому вопросу: нет необходимости использовать несколько команд отправки. Все в одной строке будет работать нормально, и вы можете указать ключу, который нужно повторить, заключив его в {}
и следуя за ним по номеру.
Но да, вы сбегаете в AHK с обратным трюком, так что вот что это выглядело бы без использования трюка с повторением ключа ````````n`n``````{Up}{Up}
.
Также здесь я использую `n
для перехода на новую строку вместо отправки ввода. У меня нет действительно сильного мнения о том, почему один или другой лучше, так что используйте, что вы предпочитаете, я думаю.
Может быть, вы могли бы сказать, что ввод лучше, поэтому любая программа, в которой вы пишете, может решить, что конец строки для использования (возможно, CR LF вместо только LF).
А затем о вашей попытке попробовать что-то с {Raw}
. Чтобы использовать другой режим отправки, вы указываете его только один раз в самом начале вашей строки, и он вступает в силу для всей команды отправки.
Прочтите документацию , чтобы получить более подробную и подробную информацию обо всех другие режимы отправки, чем я мог бы здесь напечатать.
Но в любом случае, режим Raw не сделает для нас ничего полезного. Это только заставляет символы ^+!#{}
интерпретироваться буквально, а не как клавиши-модификаторы (^+!#
) или как иные специальные клавиши ({}
).
А затем об использовании Chr()
функция. Чтобы запустить функцию и использовать ее возвращаемое значение в команде, вы захотите войти в режим выражения, в котором находится текущий параметр (единственный параметр команды send). Для этого вы указываете %
в качестве самого первого символа параметра. Таким образом, ваша команда будет выглядеть следующим образом:
:SendInput, % Chr(0x60)Chr(0x60)Chr(0x60) "{Enter 2}" Chr(0x60)Chr(0x60)Chr(0x60) "{Up 2}"
Однако это то же самое, что буквальная отправка ключа возврата, поэтому мы столкнулись с проблемой, о которой я говорил в самом начале этого поста. Не идеальное решение.
Хорошо, теперь перейдем к решению, к которому вы уже пришли, отправив его через значение ключа в Юникоде.
Итак, вот ваш последний хороший чистый - liner:
!^c::SendInput, {U+0060}{U+0060}{U+0060}{Enter 2}{U+0060}{U+0060}{U+0060}{Up 2}
В «горячей» клавише с одной строкой вам даже не нужен завершающий конец выполнения кода return
, очень приятно.
Но, к сожалению, функция повтора клавиш не будет работать в этом юникоде блок значений.